У меня есть действие, которое показывает 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)
Спасибо