在显示键盘时防止特定视图/布局向上推

时间:2018-02-27 05:09:01

标签: android

我花了好几天试图解决这个问题.. 所以我有一个片段布局。当我单击一个按钮时,该片段将显示。片段中包含recycleler(顶部)视图和edittext(底部)。所以我想要的是只显示edittext布局不会包括回收器视图布局,当我单击edittext并且键盘显示时。

3 个答案:

答案 0 :(得分:2)

在您的清单活动中尝试添加此行

android:windowSoftInputMode="adjustNothing"

这不应该调整任何东西

<强>示例

   <activity
        android:name=".MainActivity"
        android:screenOrientation="portrait" 
        android:windowSoftInputMode="adjustNothing"/>

答案 1 :(得分:1)

要避免推送您的布局/查看 ,只需转到您的清单文件 ,然后在相应的活动中添加: -

android:windowSoftInputMode="adjustNothing"

例如。)

<activity
        android:name=".yourActivity"
        android:windowSoftInputMode="adjustNothing"/>

如果您在任何片段中遇到此问题然后在您的Manifest 文件中转到此片段的父Activity并在此处添加此行。

答案 2 :(得分:0)

add configchanges tag in your activity tag in Manifest file.    

    <activity
                android:name=".ImageEditingActivity"
                android:configChanges="fontScale|keyboard|keyboardHidden|layoutDirection|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
                android:screenOrientation="landscape"
                android:theme="@style/AppTheme.NoActionBar" />

你可以在你的活动标签或类里面设置SOFT_INPUT_ADJUST_NOTHING,我在显示键盘时在片段中的类中使用它。

        private void showSoftKeyboard(InputMethodManager inputMethodManager, EditText addTxtEditText) {
            addTxtEditText.setFocusable(true);
            addTxtEditText.setEnabled(true);
            addTxtEditText.setFocusableInTouchMode(true);
            addTxtEditText.setClickable(true);

            getActivity().getWindow()
            .setSoftInputMode(
             WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);

           inputMethodManager.toggleSoftInputFromWindow(addTxtEditText.getApplicationWindowToken(), 2, 0);
            addTxtEditText.requestFocus();
        }

    private void dismissSoftKeyboard(InputMethodManager inputMethodManager, EditText addTxtEditText) {
            addTxtEditText.setFocusable(false);
            addTxtEditText.setEnabled(false);
            addTxtEditText.setFocusableInTouchMode(false);
            addTxtEditText.setClickable(false);
            inputMethodManager.hideSoftInputFromWindow(addTxtEditText.getApplicationWindowToken(), 0);
            addTxtEditText.clearFocus();
        }