布局权重和maxWidth

时间:2017-12-27 11:11:53

标签: android

我有以下布局:

<?xml version="1.0" encoding="utf-8"?>
<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="56dp"
              android:baselineAligned="false"
              android:gravity="center_horizontal"
              android:orientation="horizontal">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:minWidth="80dp"
        android:orientation="vertical"
        android:paddingBottom="8dp"
        android:paddingEnd="12dp"
        android:paddingStart="12dp"
        android:paddingTop="8dp">

        <ImageView
            android:id="@+id/img1"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_search"
            tools:ignore="ContentDescription"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/latitude"
            android:textAlignment="center"
            android:textSize="12sp"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:minWidth="80dp"
        android:orientation="vertical"
        android:paddingBottom="8dp"
        android:paddingEnd="12dp"
        android:paddingStart="12dp"
        android:paddingTop="8dp">

        <ImageView
            android:id="@+id/img2"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_search"
            tools:ignore="ContentDescription"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/latitude"
            android:textAlignment="center"
            android:textSize="12sp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:maxWidth="168dp"
        android:minWidth="80dp"
        android:orientation="vertical"
        android:paddingBottom="8dp"
        android:paddingEnd="12dp"
        android:paddingStart="12dp"
        android:paddingTop="8dp">

        <ImageView
            android:id="@+id/img3"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_search"
            tools:ignore="ContentDescription"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/latitude"
            android:textAlignment="center"
            android:textSize="12sp"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:maxWidth="168dp"
        android:minWidth="80dp"
        android:orientation="vertical"
        android:paddingBottom="8dp"
        android:paddingEnd="12dp"
        android:paddingStart="12dp"
        android:paddingTop="8dp">

        <ImageView
            android:id="@+id/img4"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_search"
            tools:ignore="ContentDescription"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/latitude"
            android:textAlignment="center"
            android:textSize="12sp"/>

    </LinearLayout>


    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center_horizontal"
        android:minWidth="80dp"
        android:orientation="vertical"
        android:paddingBottom="8dp"
        android:paddingEnd="12dp"
        android:paddingStart="12dp"
        android:paddingTop="8dp">

        <ImageView
            android:id="@+id/img5"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:scaleType="fitCenter"
            android:src="@drawable/ic_search"
            tools:ignore="ContentDescription"/>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/latitude"
            android:textAlignment="center"
            android:textSize="12sp"/>
    </LinearLayout>
</LinearLayout>

我希望每个线性布局子元素的宽度为80dp,直到168dp分配空间。我不知道怎么说使用布局权重“平均分配空间until 168dp”。我尝试使用maxWidth,但它不起作用。

2 个答案:

答案 0 :(得分:0)

您应该使用android:weightSum

  

定义最大重量总和。如果未指定,则总和通过计算   添加所有子项的layout_weight。这可以用于   实例给予单个孩子50%的总可用空间   给它一个layout_weight为0.5并将weightSum设置为1.0。

 <?xml version="1.0" encoding="utf-8"?>
    <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="wrap_content"
      android:weightSum="10"
      android:baselineAligned="false"
      android:gravity="center_horizontal"
      android:orientation="horizontal">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:orientation="vertical"
            android:paddingBottom="8dp"
            android:paddingEnd="12dp"
            android:paddingStart="12dp"
            android:paddingTop="8dp">
           ......................           
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_horizontal"
            android:orientation="vertical"
            android:paddingBottom="8dp"
            android:paddingEnd="12dp"
            android:paddingStart="12dp"
            android:paddingTop="8dp">
            ..............

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

    </LinearLayout> 

<强> FYI

如果您使用 android:minWidth

,AFAIK, android:layout_height 将无效

答案 1 :(得分:0)

通过将android:weightSum="5"设置为BaseLayout <{1}}

以下布局分配同等空间

android:minWidth