添加自定义后台堆栈

时间:2014-04-24 14:10:22

标签: android android-ui

mSearchWrapper是一个包含EditTextView的视图。 mSearchWrapper变为visiblegone

当它变为visible时,我会显示键盘并请求焦点到EditTextView:

private void showInput() {
    InputMethodManager imm = (InputMethodManager) getSystemService( Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}

此时,用户可以按后退按钮并关闭键盘。我想创建一个“这里”一个后栈,其中:在背面按下不仅键盘被隐藏,而且mSearchWrapper也被隐藏(mSearchWrapper.setVisibility(View.GONE);)。

如何在一个反压事件中同时拥有键盘隐藏的Backstack和setVisibility(View.GONE)?

(替代方法:如何在特定的现有Backstack中添加一些代码?

我应该将该活动中的整个后台重写为shown here吗?

1 个答案:

答案 0 :(得分:0)

我得到了this example的帮助。

我将Activity中的editext类扩展为:private class HidableEditText extends EditText并以编程方式从XML移动所有属性(以编程方式添加视图)。

然后我覆盖了onKeyPreIme

    @Override
    public boolean onKeyPreIme(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            mSearchWrapper.setVisibility(View.GONE);
        }
        return super.onKeyPreIme(keyCode,event);
    }

super可以为我隐藏键盘(以及堆叠),所以我只需要调整可见性。