1.首先在配置文件中添加
android:windowSoftInputMode="adjustResize" 意思是activity会根据软键盘的显示和消失始终调节布局的大小
2.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl); rl.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int heightDiff = rl.getRootView().getHeight() - rl.getHeight(); if (heightDiff > dpToPx(MainActivity.this, 200)) { // if more than 200 dp, it's probably a keyboard... // ... do something here Log.d("TAG","aaaa");//显示 }else { Log.d("TAG","bbbb");//消失 } } }); } // COMPLEX_UNIT_DIP public static float dpToPx(Context context, float valueInDp) { DisplayMetrics metrics = context.getResources().getDisplayMetrics(); return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, valueInDp, metrics); }3.这时候进入程序会发现输入法会自动弹出,是应为exidtext自动获取了焦点,在父布局添加如下代码
android:focusable="true" android:focusableInTouchMode="true"
4.现在就可以完美的监听软键盘的显示和消失了
本文介绍了如何在Android中监听和处理软键盘的显示和消失。通过设置`android:windowSoftInputMode="adjustResize"`使Activity根据软键盘状态调整布局。在`onCreate()`中添加全局布局监听器,当高度差超过200dp时判断为软键盘显示,反之则为隐藏。同时,为防止EditText自动获取焦点弹出软键盘,可在父布局中设置`android:focusable="true"`和`android:focusableInTouchMode="true"`。
1166

被折叠的 条评论
为什么被折叠?



