1

我有一个简单的问题要问您:是否可以在包含 a 的布局中强制没有屏幕溢出ScrollView

例如,如果我有以下布局:

<LinearLayout
    android:id="@+id/wrapper_table"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">     
    </LinearLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </TableLayout>
    </ScrollView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">     
    </LinearLayout>

</LinearLayout>

如果 TheTableLayout有很多TableRow,则将Scrollview扩大到屏幕的末尾,并且下部LinearLayout不再可见。是否可以在没有设置高度的情况下强制ScrollView高度以让足够的空间显示较低的LinearLayout

谢谢!!

4

2 回答 2

0

是的,在您的外部线性布局中,为每个元素设置“android:layout_weight”,并让外层指定一个“weightSum”

像这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/wrapper_table"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="1">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="0.1">     
    </LinearLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="0.8">

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        </TableLayout>
    </ScrollView>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="0.1">     
    </LinearLayout>

</LinearLayout>

“weightSum”和“layout_weight”指定应该使用多少屏幕的比例。在我的示例中,底部和顶部各占屏幕的 10%,留下 80% 作为中间滚动视图(由 tableview 填充)

现在,我相信您还需要将高度更改为“match_parent”,因为您希望它占据所有 80% 的屏幕...仔细检查...

您必须更改的另一件事(取决于您的 SDK 和编辑器版本)是每个内部元素的“layout_height”为“0dip”,否则此机制可能不起作用或您收到错误

于 2012-11-09T16:39:01.117 回答
0

将 anandroid:layout_weight应用于ScrollView; 这样,它将占用其他元素未占用的任何空间。

在下面的调整中,两个LinearLayouts 将占用足够的空间来容纳它们的内容,而 s 将占用ScrollView剩下的空间:

<LinearLayout
    android:id="@+id/wrapper_table"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">    
    </LinearLayout>

    <!-- This should be weighted height -->
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1">

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </TableLayout>
    </ScrollView>

    <!-- This should be wrap_content height -->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">    
    </LinearLayout>

</LinearLayout>
于 2012-11-09T16:42:55.000 回答