LinearLayout不会填充tablerow甚至调用fill_parent的宽度

时间:2012-08-06 21:43:06

标签: android android-layout

我在tableRow中有一个linearLayout,这个linearLayout包含一个我想为我的应用程序显示的图表。 我读了一些帖子说tableRow的子节点不需要指定它的宽度和高度,所以我做了,但是没有显示图表。如果我将linearLayout指定为width = fill_parent和height = 200dp,则linearlyLayout仅填充tableRow的1/3。

<?xml version="1.0" encoding="UTF-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center_horizontal" >

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Record"
                android:textSize="18dp"
                android:textStyle="bold"
                android:typeface="serif" >
            </TextView>
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center_horizontal" >

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.3"
                android:text="Name:"
                android:textStyle="bold"
                android:typeface="serif" >
            </TextView>

            <EditText
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.7"
                android:ems="10"
                android:singleLine="true" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center_horizontal" >

            <TextView
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="0.3"
                android:text="Date:"
                android:textStyle="bold"
                android:typeface="serif" >
            </TextView>

            <TextView
                android:id="@+id/editRecordDate"
                android:layout_width="0dp"
                android:layout_weight="0.7"       
                android:layout_height="wrap_content" />
        </TableRow>


        <TableRow
            android:id="@+id/tableRow9"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <LinearLayout
                android:id="@+id/soundaomplitude_graphViewLinearLayout"
                android:paddingTop="4dip" >    //if I specify nothing then nothing is displayed, if I set width = fill_parent and height = 200dp, then only 1/3 of the space is occupied

            </LinearLayout>
        </TableRow>

        <TableRow
            android:id="@+id/tableRow10"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <Button
                android:id="@+id/saveEditRecord"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".3"
                android:text="Save" />

            <Button
                android:id="@+id/deleteEditRecord"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight=".3"
                android:text="Delete" />

            <Button
                android:id="@+id/cancelEditRecord"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_weight=".3"
                android:text="Cancel" />
        </TableRow>
    </TableLayout>

</ScrollView>

3 个答案:

答案 0 :(得分:14)

我发现只需为linearLayout设置权重= 1(或任何数字)

<LinearLayout
                android:id="@+id/soundaomplitude_graphViewLinearLayout"
                android:layout_width="0dp"
                android:layout_height="200dp"
                android:layout_weight="1"
                android:paddingTop="4dip" />

答案 1 :(得分:1)

似乎TableRow充当LinearLayout,因此在TableRow内嵌套一个似乎是多余的。它在Eclipse中也表示它“没用”。因此,您可以直接在TableRow中包含视图(任何视图),而不是LinearLayout。如果它没有显示,则可能存在一些其他问题。

答案 2 :(得分:0)

再次阅读TableLayout如何管理其内容。特别注意它忽略了子视图的layout_width。