定位视图,使每个视图占用相同的空间

时间:2012-04-09 18:14:54

标签: android android-layout android-linearlayout

我正在尝试将一对视图(让我们说N)放在一行中,这样它们中的每一个都将占据屏幕宽度的1 / N.我知道如何使用LinearLayout(layoutWeight)来实现这一点,但问题是我需要有另一个布局,这些布局将显示在此行中的某些视图下方。问题是因为所有这些视图都被包装到LinearLayout中,所以我不能将我的附加布局放在这个布局中(出于显而易见的原因),我不能从LinearLayout引用特定视图并将我的视图放在它下面。一些视觉辅助,以帮助解释自己:

enter image description here

所以我想在上面第三个框的正下方显示灰色框。目前我通过获取屏幕宽度并将其分成N个相等部分并为此视图设置适当的边距来实现此目的。但是,我不太喜欢这个。有没有更好的方法来实现它?

2 个答案:

答案 0 :(得分:1)

所以这是我的想法因为Android上的xml非常难。

在线性布局中,在其中创建2个部分,1个线性布局,另一个相对布局使用LayoutWeight,使用原始线性布局将它们分开。

答案 1 :(得分:1)

所以你想让一个View或ViewGroup定位,使它的中心直接位于第三个盒子的中心下方?

它可能但不是很优雅:

我们的想法是使用表格布局和android:layout_span连接第二行中的3个单元格,并在该表格范围内使用居中视图。

示例表格布局:

<TableRow>

    <TextView
        android:layout_column="0"
        android:gravity="center"
        android:padding="3dip"
        android:text="0" />

    <TextView
        android:layout_column="1"
        android:gravity="center"
        android:padding="3dip"
        android:text="1" />

    <TextView
        android:layout_column="2"
        android:gravity="center"
        android:padding="3dip"
        android:text="2" />

    <TextView
        android:layout_column="3"
        android:gravity="center"
        android:padding="3dip"
        android:text="3" />

    <TextView
        android:layout_column="4"
        android:gravity="center"
        android:padding="3dip"
        android:text="4" />
</TableRow>

<TableRow>

    <TextView
        android:layout_column="0"
        android:gravity="center"
        android:padding="3dip"
        android:text="0" />

    <RelativeLayout
        android:layout_span="3"
        android:padding="3dip" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:gravity="center"
            android:text="Button 1,2,3" />
    </RelativeLayout>

    <TextView
        android:layout_column="4"
        android:gravity="center"
        android:padding="3dip"
        android:text="4" />
</TableRow>