我的应用中有一项活动,我希望用户能够垂直滚动LinearLayout
中包含的内容,而ScrollView
内的内容又位于<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>
内。以下是此活动的布局XML的摘要:
LinearLayout
我所观察到的是内部ScrollView
中的内容正在TextView
内截止。在上面的最后View
中,当它包含很少的文字时,它下方的TextView
会以纵向呈现,但不会在横向上呈现。当此ScrollView
包含大量文本时,它将以纵向模式切换。
我尝试了在Stack Overflow上找到的建议。向ScrollView
添加底部填充不能解决问题,也不会将NestedScrollView
替换为 public class GridLayout {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
EventQueue.invokeLater(()->{
MyFrame frame = new MyFrame();
//frame.setDefaultCloseOperation(0);
//frame.setTitle("Grid Layout");
// frame.setDefault
});
}
}
。
欢迎任何有用的建议。这实际上是一个阻碍者。
答案 0 :(得分:9)
将内部LinearLayout
的边距更改为填充。或者,如果您确实需要保证金(可能是您使用自定义背景),请将LinearLayout
包裹在FrameLayout
。
ScrollView
正在从LinearLayout
获取其高度(或者,更确切地说,它正在计算其可滚动范围)。此值不包含保证金,因此您的ScrollView
将会过短&#34;通过LinearLayout
的上下边距的总和。
答案 1 :(得分:0)
测量时忽略边距,请参阅this
因此,您可以为ScrollView
提供填充,并从LinearLayout
<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="match_parent"
android:padding="20dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
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="match_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="match_parent"
android:layout_height="2dip"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="@color/green" />
</LinearLayout>
</ScrollView>
在API级别8及更高版本中,我们不推荐使用fill_parent
并重命名为match_parent