带有软键盘和“返回”按钮的 EditText

Posted

技术标签:

【中文标题】带有软键盘和“返回”按钮的 EditText【英文标题】:EditText with soft keyboard and "Back" button 【发布时间】:2011-09-28 02:19:35 【问题描述】:

当我使用“EditText”时,我有虚拟键盘。

第一次按下“返回”按钮会隐藏键盘。第二次按下在我的活动中调用“onBackPressed”回调。好的,但是...

我不知道如何钩住第一次按下。我需要在虚拟键盘关闭后立即处理输入数据。

欢迎提出任何想法。

谢谢。

【问题讨论】:

您可能需要查看此链接。 [***.com/a/28719420/4432143][1][1]:***.com/a/28719420/4432143 是的,这个问题已经过时了 4 年。无论如何,谢谢。 它与最新的奥利奥有关吗?几年来我不再使用 android,只能建议从下面检查解决方案。作为最后的手段,请咨询 AOSP 来源。有时它会有所帮助。 【参考方案1】:

您可以使用此方法在键盘消失时覆盖:

  public boolean onKeyPreIme(int keyCode, KeyEvent event) 
   if (keyCode == KeyEvent.KEYCODE_BACK && 
       event.getAction() == KeyEvent.ACTION_UP) 
           // Do your thing here
           return false;
   
   return super.dispatchKeyEvent(event);
  

取自我的另一个答案@:Android: Error popup on EditText doesn't move down when keyboard goes away

【讨论】:

@Blundell 为什么你使用dispatchKeyEvent 而不是dispatchKeyEventPreIme 对不起,我不记得了 :-) 看起来都不错 但是怎么用,请多解释【参考方案2】:

自定义后退按钮:-

final RelativeLayout rrBack = (RelativeLayout) mCustomView.findViewById(R.id.rr_back);
        rrBack.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View v) 

                MyApplication.getInstance().getRequestQueue().cancelAll(FEED_DETAIL_TAG_REQUEST);
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(rrBack.getWindowToken(), 0);

            
        );

【讨论】:

以上是关于带有软键盘和“返回”按钮的 EditText的主要内容,如果未能解决你的问题,请参考以下文章

关于Android软键盘把布局顶上去的问题

软键盘仅在 EditText 焦点上显示一次

Android EditText软键盘问题

按下返回键时隐藏软键盘

EditText获取和失去焦点,软键盘的关闭,和软键盘的显示和隐藏的监听

使用软键盘上的“ENTER”键而不是单击按钮