Tencent Interactive Live 1.8は、ソフトキーボードが入力ボックスを覆い、ソフトキーボードのポップアップを閉じるという問題を解決します。

Tencent Cloud Interactive Live 1.8のデモでは、ライブインターフェイスのソフトキーボードが入力ボックスをカバーします。元々のアイデアは、入力ボックスダイアログの位置を動的に設定することでしたが、デモで変更した後、で解決できます。 Xiaomi、Meizu、Huaweiおよびその他のマシンカバレッジの問題ですが、Samsungマシンのカバレッジの問題はまだあります。誰かがカバレッジの問題を解決した可能性がありますが、モニターのソフトキーボードが失敗しました。これは、ソフトキーボードダイアログが閉じられていないことを意味します。これが私の解決策です。上の最初の写真は次のとおりです。

ここに写真の説明を書いてください


質問1:ソフトキーボードがダイアログをカバーします

ここに写真の説明を書いてください

setContentViewの前に追加
//ソフトキーボード
ダイアログの入力ボックスをカバーしないようにしますgetWindow()。setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE |
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

ソフトキーボードカバレッジの問題を解決できます。

質問2:入力ボックスが表示されたら、空白部分をクリックしてソフトキーボードとダイアログを閉じます

1.ダイアログのルートレイアウトをmatch_parentに変更します

2.古いコードのルートレイアウトの位置の監視を削除し、onTouchでルートレイアウトの監視イベントを増やします

ここに写真の説明を書いてください

質問3:入力ボックスを閉じるか、リターンキーを押しても、ダイアログが閉じません

手順1と2を完了すると、入力ボックスを閉じるか、リターンキーダイアログを押すと閉じられず、画面の下部に表示されます。このとき、ルートのイベントをリッスンする必要があります。レイアウトGlobalLayout

activity_live.xmlレイアウトにあり、一番上のレイアウトは

    <include
        android:id="@+id/invite_views"
        layout="@layout/invite_views"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent" />

現時点では、イベントのレイアウトを監視するだけで十分です。

注:OnGlobalLayoutListenerは、次の条件で応答します
。SoftInputModeがADJUST_RESIZEである場合、それ以外の場合、位置の変化を監視できません。

//软键盘的监听
        findViewById(R.id.invite_views).getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Rect r = new Rect();
                //获取当前界面可视部分
                getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
                //获取屏幕的高度
                int screenHeight =  getWindow().getDecorView().getRootView().getHeight();
                //此处就是用来获取键盘的高度的, 在键盘没有弹出的时候 此高度为0 键盘弹出的时候为一个正数
                int heightDifference = screenHeight - r.bottom;

                if(heightDifference <= 0 && mLastDiff > 0){
                    //软键盘收起状态
                    Log.d("AAAA","软键盘 弹出之后收起了 Rect GlobalLayoutListener heightDifference="+heightDifference+",mLastDiff="+mLastDiff);
                    if(inputMsgDialog!=null && inputMsgDialog.isShowing()){
                        inputMsgDialog.dismiss();
                    }
                }
                mLastDiff = heightDifference;

            }
        });

ここに写真の説明を書いてください

この時点で、上記の問題は解決されているはずです。

おすすめ

転載: blog.csdn.net/android_freshman/article/details/51713183