将屏幕划分为4个相等的部分 - android

时间:2015-11-20 18:45:30

标签: java android xml landscape

我希望我在android中的屏幕分为4个相同大小的相等部分。它必须在横向模式下工作。This is an example of how i want it to look like

3 个答案:

答案 0 :(得分:4)

你可以使用除LinearLayouts和权重之外的任何东西:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffff"
    android:padding="10dp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".5"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight=".5"
            android:orientation="vertical"
            android:layout_marginRight="5dp"
            android:layout_marginBottom="5dp"
            android:background="#ff0000"/>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight=".5"
            android:orientation="vertical"
            android:layout_marginLeft="5dp"
            android:layout_marginBottom="5dp"
            android:background="#ff8000"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight=".5"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight=".5"
            android:orientation="vertical"
            android:layout_marginRight="5dp"
            android:layout_marginTop="5dp"
            android:background="#336699"/>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight=".5"
            android:orientation="vertical"
            android:layout_marginLeft="5dp"
            android:layout_marginTop="5dp"
            android:background="#993366"/>

        </LinearLayout>

</LinearLayout>

更新:,10dp&#34;空白&#34;在街区之间和之间。如果您还想在每个块中应用圆角,就像在屏幕截图中一样,请查看android的xml drawables。然后可以将这些应用于android:background而不是像我的示例中那样的纯色;)

更新2:使用xml drawable创建圆角:

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners
        android:radius="10dp" />
    <solid
        android:color="#ff8000" />
</shape>

将xml drawable保存到drawable目录,就像使用任何其他图像(png / jpg / etc)一样,并从您的视图中引用它,例如:

android:background="@drawable/your_xml_drawable_res"

当然,如果您为所有4个方格应用相同的资源作为背景,那么您将获得四个橙色(#ff8000)背景。您可以在上面创建4个xml drawable副本,并将每个副本中的android:color更改为唯一的阴影。

关于它的问题;)

答案 1 :(得分:2)

除了mjp66 answer之外,我可以说使用支持库中的GridLayout可以更好地完成此布局。在这种情况下,您不需要处理多列中的更改,如果有的话。

您的代码如下所示:

<android.support.v7.widget.GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:rowCount="2"
    app:columnCount="2">

    <View
        android:id="@+id/top_left"
        app:layout_gravity="fill_horizontal"
        app:layout_columnWeight="1"
        app:layout_rowWeight="1"/>

    <View
        android:id="@+id/top_right"
        app:layout_gravity="fill_horizontal"
        app:layout_columnWeight="1"
        app:layout_rowWeight="1"/>

    <View
        android:id="@+id/bottom_left"
        app:layout_gravity="fill_horizontal"
        app:layout_columnWeight="1"
        app:layout_rowWeight="1"/>

    <View
        android:id="@+id/bottom_right"
        app:layout_gravity="fill_horizontal"
        app:layout_columnWeight="1"
        app:layout_rowWeight="1"/>

</android.support.v7.widget.GridLayout>

因此,您不需要照顾宽度/高度,布局将自动执行。

答案 2 :(得分:-1)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".5"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".5"
        android:orientation="vertical"
        android:background="#ff0000"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".5"
        android:orientation="vertical"
        android:background="#ff8000"/>

</LinearLayout>


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight=".5"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".5"
        android:orientation="vertical"
        android:background="#336699"/>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".5"
        android:orientation="vertical"
        android:background="#993366"/>

</LinearLayout>