尽管屏幕高度,仍然将布局划分为常规形状

时间:2015-10-11 16:34:24

标签: android android-layout

我希望在屏幕的下半部分有3个正方形和一个矩形,如下所示:

enter image description here

有没有人知道如何调整形状,使得前3个保持为正方形,矩形的宽度是正方形的两倍',即使屏幕的垂直高度是长/短?我已尝试使用layout_weight:1.0,但高度可能会延长。

我希望不需要固定宽度和高度。

由于

3 个答案:

答案 0 :(得分:0)

您可以使用GridLayout来实现此目标,因为它支持columnWeightrowWeight属性。为每一行设置rowWeight1,每个正方形columnWeight1columnSpan2的矩形应创建您想要的效果。

要在21级以下的API级别使用此功能,请改用GridLayout的支持版本。

答案 1 :(得分:0)

可能是一种矫枉过正,而不是因为性能问题而推荐。但仍然:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_weight="0.5"
            android:layout_height="0dp">

        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_weight="0.5"
            android:weightSum="2"
            android:orientation="vertical"
            android:layout_height="0dp">
            <LinearLayout
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:orientation="horizontal"
                android:layout_height="0dp">
                <LinearLayout
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="match_parent">

                </LinearLayout>
                <LinearLayout
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="match_parent">

                </LinearLayout>
                <LinearLayout
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="match_parent">

                </LinearLayout>

            </LinearLayout>
            <LinearLayout
                android:orientation="horizontal"
                android:layout_weight="1"
                android:weightSum="3"
                android:layout_width="match_parent"
                android:layout_height="0dp">
                <LinearLayout
                    android:layout_weight="2"
                    android:layout_width="0dp"
                    android:layout_height="match_parent">

                </LinearLayout>

            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

答案 2 :(得分:0)

有很多方法可以执行此操作,如果您愿意,可以仅使用layout_weight来实现它。

1)通过为每个视图设置layout_weight="1",将第一行划分为3个相等大小的视图。

2)在第二行中,您要将“视图”设置为等于2个视图的大小:数学为2/3 = 0.67。

3)所以在第二行设置视图layout_weight="0.67"。您还必须为隐形视图提供剩余的0.33宽度。

像这样:

           <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <View
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"/>
                <View
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"/>
                <View
                    android:layout_weight="1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    />
            </LinearLayout>

            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <View
                    android:layout_weight="0.67"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    />

                <View
                    android:layout_weight="0.33"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:visibility="invisible"/>
            </LinearLayout>