安卓:ScrollView问题

29

我在使用滚动视图方面遇到了一些问题。最近,我尝试创建一个线性视图,其中内容超出了屏幕大小,所以我创建了一个具有父元素ScrollView的新布局,并将其宽度和高度设置为自定义值(该布局必须显示为对话框 - 不填充整个屏幕)。

当选择该元素时,红色边框出现,包围预定义ScrollView LayoutWidth和LayoutHeight的矩形,这是可以的。然后我放置在其中并将值LayoutWidth和LayoutHeight设置为fill_parent。

然后,当我开始向LinearLayout添加元素时,边框(红色的线)包裹插入的元素,而不是整个父ScrollView。

因此,当LinearLayout的内容(ScrollView的子元素)超过父ScrollView的大小时,滚动条不会出现,并且底部的元素将变得简单无法看到。

无论如何,那种情况下,XML内容太广泛了,无法在此处发布问题,现在我正在使用更简单的示例遇到相同的问题。

布局的以下部分旨在成为可滚动的EditText(如果用户输入超过小部件的主要大小)。 我想将EditText的高度设置为120px,因此我将父ScrollView的高度设置为120px,将子EditText设置为fill_parent。同样,在这种情况下,EditText不会填充整个ScrollView区域,而是只有一行:

 <ScrollView android:layout_height="120px" android:layout_width="fill_parent">
<EditText android:id="@+id/txtContent" android:layout_height="fill_parent" android:layout_width="fill_parent" android:text="TestContent">
</EditText>
</ScrollView>

有人知道如何重新设计上面的内容,使EditText填充父控件,并在用户输入超过控件大小时出现滚动条吗?

谢谢!

编辑:

以下是布局屏幕截图

已删除失效的ImageShack链接
已删除失效的ImageShack链接

2个回答

95

您的EditText应该具有 wrap_content 的高度。在 ScrollView 中,fill_parent 没有任何意义。如果您希望 EditText 在其内容小于 ScrollView 时填充您的 ScrollView,请在 ScrollView 上使用 android:fillViewport="true"


但是,如果使用ScrollView并设置android:fillViewport="true",会给我带来奇怪的麻烦。在片段中有一个滚动视图,在其中有一个表格布局,其中包含在运行时动态创建的表格行。之后,如果广告横幅加载并且我使其可见,由于片段大小的变化,我的子表格行会消失。如果将fillViewPort设置为false,则不会发生这种情况! - Muhammad Babar

9

正如Romain所说,ScrollView需要以下组合。

  1. 对于ScrollView:android:fillViewport="true"
  2. 对于ScrollView的子元素:android:layout_height="wrap_content"

1
是的。有时当我将其设置为fill_parent时,会出现奇怪的行为。 - Eren Tantekin
我也做了同样的事情,但是无法滚动?你可以帮我理解可能出了什么问题吗? - Rakesh Gondaliya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接