Android TableLayout表示为LinearLayout的百分比

时间:2012-03-01 20:23:28

标签: android android-layout

我正在尝试将一个TableLayout作为LinearLayout中的唯一项目(它有一个我想覆盖整个屏幕的背景图标),我想将它居中并说使用60%的宽度和70%的高度例如。我有这个,它看起来不错,但我不确定它是否可以在许多设备上工作,我想知道什么是表达它的最佳,最通用的方式。

<LinearLayout
    android:id="@+id/mainLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/mylogo"
    android:padding="0dip"
    android:gravity="center_vertical|center_horizontal"
    android:baselineAligned="false"
    >

    <TableLayout
        android:background="#FFFF0000"
        android:layout_width="200dp"
        android:layout_height="250dp"
        android:gravity="center_vertical|center_horizontal"
        android:stretchColumns="field">

    </TableLayout>

</LinearLayout>

我搞乱了layout_Weights,但我唯一能做的就是让桌子消失。

由于 斯蒂芬

3 个答案:

答案 0 :(得分:1)

LinearLayout只能通过一个维度的权重进行子大小调整,但由于您只关心调整单个视图的大小,您可以通过嵌套LinearLayout来实现此目的。

<LinearLayout
    android:id="@+id/mainLayout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/mylogo"
    android:gravity="center"
    android:weightSum="1.0">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:orientation="horizontal"
        android:gravity="center"
        android:weightSum="1.0"
        android:layout_weight="0.7">

        <TableLayout
            android:background="#FFFF0000"
            android:layout_width="0dp"
            android:layout_height="fill_parent"
            android:gravity="center"
            android:stretchColumns="field"
            android:layout_weight="0.6">

        </TableLayout>

    </LinearLayout>
</LinearLayout>

此布局在各种设备上是否合适,取决于您的内容。一般来说,我倾向于合理的填充/边距,但它又非常依赖于内容。

答案 1 :(得分:0)

尝试使用RelativeLayout而不是LinearLayout,因为如果线性中只有一个子节点,它将占用其父节点的整个空间。

答案 2 :(得分:0)

我认为你做的方式很好。您可能在不同设备之间存在一些差异,但您可以为其他屏幕密度和方向设置不同的布局。

使用layout_weight只有在LinearLayout内有多个孩子时才有用。