简体   繁体   English

布局权重和maxWidth

[英]Layout weight and maxWidth

I have the following layout: 我有以下布局:

<?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>

I want each linear layout child to have a width of 80dp until to 168dp distributing the space. 我希望每个线性布局子级都有80dp的宽度,直到168dp分配空间。 I have no idea how to say using layout weight "distribute the space equally until 168dp ". 我不知道怎么说布局权重“将空间平均分配until 168dp ”。 I tried to use maxWidth but it doesn't work. 我尝试使用maxWidth但是它不起作用。

You should use android:weightSum . 您应该使用android:weightSum

Defines the maximum weight sum. 定义最大重量总和。 If unspecified, the sum is computed by adding the layout_weight of all of the children. 如果未指定,则通过将所有子项的layout_weight相加来计算总和。 This can be used for instance to give a single child 50% of the total available space by giving it a layout_weight of 0.5 and setting the weightSum to 1.0. 例如,可以通过给它一个0.5的layout_weight并将weightSum设置为1.0来给单个孩子提供总可用空间的50%。

 <?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 费耶

AFAIK, android:minWidth will not work if you use android:layout_height AFAIK,如果您使用android:layout_height ,则android:minWidth将不起作用

below layout distribute equally space by setting android:weightSum="5" to BaseLayout also removed android:minWidth 下面的布局通过将android:weightSum="5"为BaseLayout来平均分配空间 ,也删除了android:minWidth

    <?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"
              android:weightSum="5">

    <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">

        <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: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: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: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: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>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM