【问题标题】:OnBackPressed with a SoftKeyboard openOnBackPressed 打开软键盘
【发布时间】:2015-09-13 01:13:31
【问题描述】:

我想在软键盘打开时完成一个活动,我想覆盖软键盘的返回事件并完成活动。

我正在使用它,但它不起作用,有什么想法吗?

 public boolean onKeyPreIme(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK &&
                event.getAction() == KeyEvent.ACTION_UP) {
            this.finish();
            return false;
        }
        return super.dispatchKeyEvent(event);
    }

【问题讨论】:

    标签: android android-softkeyboard


    【解决方案1】:

    onKeyDown() 和 onBackPressed() 不适用于这种情况。你必须使用onKeyPreIme。

    最初,您必须创建扩展 EditText 的自定义编辑文本。然后你必须实现控制KeyEvent.KEYCODE_BACK 的onKeyPreIme 方法。在此之后,一个背压足以解决您的问题。这个解决方案非常适合我。

    CustomEditText.java

    public class CustomEditText extends EditText {
    
        Context context;
    
        public CustomEditText(Context context, AttributeSet attrs) {
            super(context, attrs);
            this.context = context;
        }
    
        @Override
        public boolean onKeyPreIme(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                // User has pressed Back key. So hide the keyboard
                InputMethodManager mgr = (InputMethodManager)         
                    context.getSystemService(Context.INPUT_METHOD_SERVICE);
                mgr.hideSoftInputFromWindow(this.getWindowToken(), 0);
                // TODO: Hide your view as you do it in your activity
            }
            return false;
    }
    

    在您的 XML 中

    <com.YOURAPP.CustomEditText
         android:id="@+id/CEditText"
         android:layout_height="wrap_content"
         android:layout_width="match_parent"/> 
    

    在你的活动中

    public class MainActivity extends Activity {
       private CustomEditText editText;
    
       @Override
       public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          editText = (CustomEditText) findViewById(R.id.CEditText);
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-10-08
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多