android没有输入焦点类控件的输入法调用,【已解决】android中的EditText控件没有获得焦点但是输入法却弹出显示->Activity中不要默认就显示输入法...

【问题】

android中,对于EditText控件来说,虽然没有获得焦点,但是结果也还是跳出输入法了:

5fa517607c2dd4c12ff6ec14f5629402.png

希望达到的目的:当控件没有被点击选中的话,不要显示对应的输入法。

当用户点击选中后,再显示对应的输入法。

【折腾过程】

1.后来经过自己的摸索,发现好像不是,EditText没有获得焦点就显示出输入法,而应该是:

对于当前的Tab内的EditText来说,即使是Enable设置为False,不允许修改,但是其获得了焦点后,还是会显示输入法。

所以应该是:

对于Enable为False的EditText来说,应该让输入法不显示才对。

对于Enable为True的EditText来说,当获得焦点后才显示输入法。

2.搜:

android edittext disabled not show inputmethod

参考:

去试试://update for focusable or not

if(variableValueView.isEnabled()){

variableValueView.setFocusable(true);

}

else{

variableValueView.setFocusable(false);

}

果然是可以禁止输入法显示的。

但是对于当切换到另外一个Tab,焦点处于第一个EditText后,输入法还是没显示,而是重新点击一下才显示,觉得这样的话,也是不合理的。

3.再去搜已经废弃的:

android:editable="false"

参考:

所以去试试://update for focusable or not

if(varIsEditable){

//deprecated

//variableValueView.setEnabled(true);

variableValueView.setFocusable(true);

variableValueView.setFocusableInTouchMode(true);

variableValueView.setOnFocusChangeListener(mFocusChangedListener);

}

else{

variableValueView.setFocusable(true);

variableValueView.setFocusableInTouchMode(true);

variableValueView.setOnFocusChangeListener(null);

variableValueView.setKeyListener(null);

}

看看结果:

结果没法输入了。

4.还是只能改为之前的://update for focusable or not

if(varIsEditable){

//deprecated

variableValueView.setEnabled(true);

variableValueView.setFocusable(true);

variableValueView.setFocusableInTouchMode(true);

variableValueView.setOnFocusChangeListener(mFocusChangedListener);

}

else{

variableValueView.setEnabled(false);

variableValueView.setFocusable(true);

variableValueView.setFocusableInTouchMode(true);

variableValueView.setOnFocusChangeListener(null);

variableValueView.setKeyListener(null);

}

5.其实问题已经转化为:

android中如何不自动跳出显示键盘输入法

所以去搜:

android not show keyboard

找到:

去Activity的onCreate中加入:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

然后果然可以实现:

当启动界面后,虽然已经获得了焦点了,但是不自动跳出输入法了。

【总结】

此处不是(Tab页面内的)EditText没有获得焦点就显示出输入法;

也不是,EditText已把Enable设置为False,已经被禁止被编辑了,但是还是会显示出输入法;

而是:

当Activity启动后,默认显示出对应的输入法了。

所以需要去在Activity的onCreate中加上:getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

去把默认(即使没有控件获得焦点却也会弹出)显示输入法,去掉。就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值