Andorid监听SoftKeyboard弹起事件

  对于Android键盘事件Google并没有提供一个好的接口去监听它,有时候就为项目需要就必须要自己去想办法去监听,由于我最近也要实现登陆与注册的功能,我的想法很简单实现起来也比较容易,主要的原理是在将Activity的配置android:windowSoftInputMode设置成adjust_resize当然设成其它我觉得也是可以的只是这还没有测试,这样在键盘弹出时Android会将而已进行调整,直接上代码呢。

设置inputMode

 1 <activity
 2             android:name=".MainActivity"
 3             android:label="@string/app_name"
 4             android:windowSoftInputMode="adjustResize"
 5             >
 6             <intent-filter>
 7                 <action android:name="android.intent.action.MAIN" />
 8 
 9                 <category android:name="android.intent.category.LAUNCHER" />
10             </intent-filter>
11         </activity>

设置监听而已变化

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //android.R.id.content 这是包含布局的父控件ID
        View contentView = findViewById(android.R.id.content);
     //设置而已监听器 contentView.addOnLayoutChangeListener(this); }

根据值的变化判断键盘是否显示。


  @Override
    public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
        if(bottom < oldBottom){
            onKeyboardState(true);
        }else if(bottom > oldBottom){
            onKeyboardState(false);
        }
    }

 这样基本上就可以实现键盘的监听呢,我这样写基本上可以满足大部分需求。

 
原文地址:https://www.cnblogs.com/xwgblog/p/4656460.html