![](/img/trans.png)
[英]EditText focus is not working in android studio, i want to hide a textview when focus change in edittext, how to do this?
[英]Hide keyboard after change focus of Edittext in Android
目前我在 Edittext 之间切换时遇到隐藏键盘的问题。 我用以下源代码隐藏了键盘:
edittext1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
edittext1.requestfocus();
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
return true;
}
});
edittext2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
edittext1.requestfocus();
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
return true;
}
})
但是上面的代码没有成功。 每次我触摸它时,键盘都会显示。 当按住edittext并移出edittext区域时,它仍然显示键盘。
我不知道如何在以下情况下隐藏键盘:
在这种情况下你能帮我吗? 谢谢。
public class CompositeOnChangeFocusListener implements OnFocusChangeListener{
private View currentFocusedView = null;
public void onFocusChange(View v, boolean hasFocus) {
//on a focus change.
if(currentFocusedView != v){
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
//case a view in this composite has focus.
if(hasFocus) {
currentFocusedView = v;
}
//case no view using this composite is focused.
if(v == currentFocusedView && !hasFocus){
currentFocusedView = null;
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
}
}
OnFocusChangeListener
的这个实现将跟踪当前聚焦的View
,如果焦点已经改变,它将移除键盘。 它还将根据hasFocused
boolean
更新关注哪个视图。
OnFocusChangeListener listner = new CompositeOnFocusChangeListener();
//Attach the same exact listener to both.
edittext1.setOnFocusChangeListener(listner);
edittext2.setOnFocusChangeListener(listner);
还尝试将布局 xml 中的顶级视图设置为可聚焦,这样当您滑出EditText
焦点时,应该 go 到顶级视图而不是粘在EditText
上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.