Android:在ScrollView中使用软键盘输入文本可向上抬起标题视图

时间:2019-06-11 17:43:58

标签: android android-scrollview

我花了几个小时来调试这些SO问题中描述的相同问题:

Android: How do I prevent the soft keyboard from pushing my view up?

How to avoid soft keyboard pushing up my layout?

Android: How do I prevent the soft keyboard from pushing my view up?

generally accepted answerandroid:windowSoftInputMode="adjustPan"添加到清单活动声明中。这可以使打开键盘时屏幕保持原状,但是当输入的行数多于屏幕可显示的文本时,它不会阻止屏幕滚动。这是我实施该解决方案时看到的:

enter image description here

打开键盘时,标题仍然保留,但是,如果您键入几行,标题最终将滚动到屏幕顶部。

我尝试使用Google搜索这个问题来尝试解决它,但没有一个解决方案起作用。然后,我通过与上述公认的答案相反的方法设法解决了这个问题。

作为参考,我的布局xml文件:

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"/>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintTop_toBottomOf="@id/header"
        android:fillViewport="true">

        <EditText
            android:id="@+id/noteText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine"
            android:windowSoftInputMode="adjustPan"/>

    </ScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>

我的清单:

    <activity android:name=".activity.MainActivity"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustPan"
        android:resizeableActivity="true"
        tools:targetApi="n"/>

1 个答案:

答案 0 :(得分:0)

我通过更改清单活动声明以从清单中删除android:windowSoftInputMode="adjustPan"行来解决了这个问题:

    <activity android:name=".activity.MainActivity"
        android:screenOrientation="portrait"
        android:resizeableActivity="true"
        tools:targetApi="n"/>

...现在一切正常,打开键盘并输入文本后,标题保留在屏幕上。

希望我可以节省一个人解决这个问题所花费的时间。修复清单后,外观如下:

enter image description here