android 对软键盘的显示和消失监听

本文介绍了如何在Android中监听和处理软键盘的显示和消失。通过设置`android:windowSoftInputMode="adjustResize"`使Activity根据软键盘状态调整布局。在`onCreate()`中添加全局布局监听器,当高度差超过200dp时判断为软键盘显示,反之则为隐藏。同时,为防止EditText自动获取焦点弹出软键盘,可在父布局中设置`android:focusable="true"`和`android:focusableInTouchMode="true"`。
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.现在就可以完美的监听软键盘的显示和消失了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值