如何禁用 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">
解决了问题,但所需的高度随后受到影响。 Horizontal scrollView 也会发生同样的事情。
有什么办法可以解决这个问题吗?详细的回答会有所帮助。
将 EditText
的高度设置为 wrap_content
,使其展开而不是滚动。将 LinearLayout
的高度设置为 wrap_content
,这样它就是其内容的大小,即 TextView
和 EditText
.
ScrollView
应该是您在内容布局中将“window”设置为任何高度,LinearLayout
在 [=16= 的“后面”上下移动].
如果内容布局太大而无法在可见 ScrollView
中显示,则会发生滚动,这就是为什么内容布局应始终为 wrap_content
(内容的大小)而不是 match_parent
(滚动视图的大小“window”)。如果内容始终与滚动视图大小相同,则它们永远不需要滚动,对吗?
问题的标题可能看起来与其他问题相似,但事实并非如此。我有几个奇怪的问题我无法解决。
我有一个 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">
解决了问题,但所需的高度随后受到影响。 Horizontal scrollView 也会发生同样的事情。
有什么办法可以解决这个问题吗?详细的回答会有所帮助。
将 EditText
的高度设置为 wrap_content
,使其展开而不是滚动。将 LinearLayout
的高度设置为 wrap_content
,这样它就是其内容的大小,即 TextView
和 EditText
.
ScrollView
应该是您在内容布局中将“window”设置为任何高度,LinearLayout
在 [=16= 的“后面”上下移动].
如果内容布局太大而无法在可见 ScrollView
中显示,则会发生滚动,这就是为什么内容布局应始终为 wrap_content
(内容的大小)而不是 match_parent
(滚动视图的大小“window”)。如果内容始终与滚动视图大小相同,则它们永远不需要滚动,对吗?