如何禁用 EditText 的默认滚动行为?

How to disable default scroll behavior of an EditText?

问题的标题可能看起来与其他问题相似,但事实并非如此。我有几个奇怪的问题我无法解决。

我有一个 xml 布局,该布局的结构如下所示。

LinearLayout
     |
  ScrollView
        |
     LinearLayout
           |
         TextView
         EditText(multiLine)

xml:-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Large Text"/>

            <EditText
                android:layout_width="match_parent"
                android:inputType="textMultiLine"
                android:layout_height="match_parent"/>

        </LinearLayout>

    </ScrollView>

</LinearLayout>

现在让我们讨论一下问题。 如果我继续向 editText 添加新行,则 editText 本身会滚动,而位于 EditText 上方的 TextView 不会滚动。但我想要的是 EditText 不要滚动并离开 scrollView 的工作,以便在添加新行时位于 EditText 上方的 textView 也与 EditText 一起滚动。

当我按回时(通常当 editText 不再聚焦时),ScrollView 表现正常。 设置为

<ScrollView
    ...
    layout_height="wrap_content">

解决了问题,但所需的高度随后受到影响。 Horizo​​ntal scrollView 也会发生同样的事情。

有什么办法可以解决这个问题吗?详细的回答会有所帮助。

EditText 的高度设置为 wrap_content,使其展开而不是滚动。将 LinearLayout 的高度设置为 wrap_content,这样它就是其内容的大小,即 TextViewEditText.

ScrollView 应该是您在内容布局中将“window”设置为任何高度,LinearLayout 在 [=16= 的“后面”上下移动].

如果内容布局太大而无法在可见 ScrollView 中显示,则会发生滚动,这就是为什么内容布局应始终为 wrap_content(内容的大小)而不是 match_parent(滚动视图的大小“window”)。如果内容始终与滚动视图大小相同,则它们永远不需要滚动,对吗?