我想在焦点离开TextEdit框时消失键盘。我已经仔细搜索了stackoverflow和谷歌的答案,并尝试了我看过的每一个回复/文章,但似乎没有什么对我有用。
很多人,我对Android开发很新。我必须忽略一些细节,但无济于事。
我目前的实施(再次,我尝试了很多解决方案)如下:
我的班级实施OnFocusChangeListener
。在调用super OnCreate
之后setContentView
:
EditText editText = (EditText) findViewById(R.id.text_box);<br> editText.setOnFocusChangeListener(this);
和
@Override
public void onFocusChange(View v, boolean hasFocus) { Log.d(TAG, "--> onFocusChange"); }
但我从未看到过Log消息。
有时我认为onFocusChange不是我认为的那样。我的想法是,当我们触摸textedit字段时,这个视图会获得焦点,当你触摸屏幕的任何其他区域时,说一个按钮/列表框/等等textedit会失去焦点并且应该调用onFocusChange,但事实并非如此,我从未看到过日志条目。
澄清我使用的是Android Studio并创建了一个使用片段的应用程序可能很有用。
所以,我在Detail Activity上执行此操作,而Detail Activity又是片段的一部分。我也尝试在片段的onActivityCreated上进行。
这两种方法都不适合我。
我可以在这里找到什么想法?
我非常感谢你的评论。
答案 0 :(得分:0)
editText.setFocusableInTouchMode(true);
先尝试一下吗?
在让焦点事件触发之前,您需要使该字段具有可聚焦性。但我想在这种情况下它并没有帮助你:(
答案 1 :(得分:0)
edittext.requestFocus();
或
试试这个:
EditText editText = (EditText) findViewById(R.id.text_box);
editText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus)
{
if (hasFocus == true){
edittext.requestFocus();
}
else{
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
}
});
答案 2 :(得分:0)
onFocusChangeListener是一个接口,当您尝试像以前一样实现该接口时,还需要传递您想要被观察的上下文,因此在实践中必须观察到ViewHolder的其中一个视图元素,对吗?所以你可以这样纠正 例如,假设您要检查EditText何时聚焦:
editText.onFocusChangeListener = this
即使您在实现OnFocusChangeListener时位于Adapter或ViewHolder中,也可以将相应的类分配给要在焦点发生变化时受到监督的Context。