我有一个显示 EditText 和两个底部的活动。
当我点击 EditText 时,会出现 Android 虚拟键盘,以便我可以输入文本。现在,在点击任何底部之前,我想隐藏键盘。我想通过点击屏幕来做到这一点。
我在stackoverflow中看到过一些类似问题的帖子,但这看起来不像工作。我试图设置一个监听器:
// Create an anonymous implementation of OnFocusChangeListener
private OnFocusChangeListener mFocusListener = new OnFocusChangeListener() {
public void onFocusChange(View v, boolean b) {
// do something when the focus changes
hideSoftKeyboard(v);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setupUI(findViewById(R.id.parent));
EditText editText = (EditText) findViewById (R.id.edit_message);
editText.setOnFocusChangeListener(mFocusListener);
setContentView(R.layout.activity_main);
}
我还尝试创建一个父活动,该活动递归地将 onTouch 事件关联到不是文本视图的每个视图,但它确实只注册了文本视图(我从另一个 stackoverflow 帖子中获取了这段代码)
public void setupUI(View view) {
//Set up touch listener for non-text box views to hide keyboard.
if(!(view instanceof EditText)) {
view.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
hideSoftKeyboard(v);
return false;
}
});
}
//If a layout container, iterate over children and seed recursion.
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
View innerView = ((ViewGroup) view).getChildAt(i);
setupUI(innerView);
}
}
}
有什么直截了当的解决方案吗?我不敢相信没有更简单的方法可以做到这一点。我正在使用 Gingerbread API(API 级别 10)
谢谢