我的应用程序中有一个活动,我希望用户能够垂直滚动LinearLayout
中包含的内容,而ScrollView
又位于LinearLayout
中。以下是此活动的布局XML的摘要:
<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="fill_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="20dip"
android:orientation="vertical">
<!-- a bunch of standard widgets, omitted for brevity -->
<!-- everything renders but starting in this TextView -->
<!-- content begins to get truncated -->
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:gravity="left"
android:textSize="20dip"/>
<!-- this View, really just a trick for a horizontal row, is -->
<!-- completely cutoff -->
<View
android:layout_width="fill_parent"
android:layout_height="2dip"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="@color/green" />
</LinearLayout>
</ScrollView>
</LinearLayout>
我所观察到的是内部的内容在内部被切断。在上面的最后一个
ScrollView
中,当它包含很少的文本时,下面的TextView
将以纵向呈现,但不以横向呈现。当这个View
包含大量文本时,它将在纵向模式下被截断。我尝试了在堆栈溢出上找到的建议。向
TextView
添加底部填充并没有解决问题,也没有将ScrollView
替换为ScrollView
。欢迎提出任何有益的建议。事实证明这是个障碍。
最佳答案
将内部LinearLayout
的边距改为填充。或者,如果你真的需要它是边距(也许你使用的是自定义背景),把你的LinearLayout
包装成FrameLayout
。ScrollView
从LinearLayout
中获取它的高度(或者更准确地说,它正在计算它的可滚动范围)。这个值不包括边距,所以您的ScrollView
将被LinearLayout
的上下边距之和“太短”。