提问者:小点点

高度大于屏幕时Android TextInputLayout书写焦点问题


我有一个如下的TextInputLayout:

<com.google.android.material.textfield.TextInputLayout
        android:id="@+id/textInputLayout"
        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="200dp">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/textInputLayoutEdit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:minHeight="200dp"
            android:gravity="top" />
</com.google.android.material.textfield.TextInputLayout>

此TextInputLayout的高度是动态的,如中,当写入更多文本时,高度将增长。 因此,在高度变得大于屏幕的情况下,为了看到TextInputLayout的第一行,需要滚动,这就存在书写聚焦的问题。 当在顶部一路书写时,屏幕焦点将一路向下,而光标仍在顶部。 这使我无法看到顶部正在写入的内容,因为屏幕正在滚动到TextInputLayout的底部。 而且有时焦点又回到顶部,几乎像是一个小故障的闪烁。

写在底部正常工作,因为底部屏幕焦点总是优先级。 当TextInputLayout的高度还没有超过屏幕时,在顶部书写也可以很好地工作,因为不需要滚动。

是否需要在TextInputLayout中设置一个属性,以便使屏幕聚焦在我正在书写的地方?


共1个答案

匿名用户

MaxLines属性添加到TextInputedText中,并将InputType属性设置为TextMultiLine,如下所示:

<com.google.android.material.textfield.TextInputEditText
            android:id="@+id/tiet_hisab_description"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLines="2"
            android:hint="@string/details"
            android:inputType="textAutoCorrect|textMultiLine|textAutoComplete"
            android:textAppearance="@style/TextAppearance.AppCompat.Small" />