dialog 自动弹出软键盘的问题

dialog中  有EditText  有的需求是自动弹出软键盘   有的是不需要自动弹出软键盘   其实解决方案是一样的

前段时间  dialog中  有EditText 需要自动弹出    试了各种办法 都没啥用  比如EditText 焦点的获取 强制软键盘的弹出  但是这个时候 强制弹出的软键盘   闪下就没了   强制的代码是在dialog.show()之后 运行的    得到这个结果之后   用反证法 其实就不难找到原因了  
dialog  是自己写的一个类  extends Dialog     在style里面   可以找到这样一个属性<item name="android:windowIsFloating">true</item>
这个时候  可以理解  当我dialog.show()的时候  就立马执行了强制软键盘弹出代码   但是此时 dialog视图加载没有完成  软键盘的view 从属关系 属于上个view
而不是dialog 的view 所以 需在强制代码  加个延时操作  
/*Timer timer = new Timer();(此代码来源于网络)
timer.schedule(new TimerTask() {

@Override
public void run() {
editText.requestFocus();
InputMethodManager inputManager = (InputMethodManager) editText  
                    .getContext().getSystemService(Context.INPUT_METHOD_SERVICE);  
            inputManager.showSoftInput(editText, 0); 
}
}, 300);*/
解决方案二   把dialog  style 改行属性  <item name="android:windowSoftInputMode">stateVisible</item>次方案只针对需要自动弹出软键盘的dialog
至于这个属性 自行百度  android:windowSoftInputMode
软键盘 用的比较少   以后有时间  看下源码   跟下原理   目前就这样  希望有点帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值