Android 布局权重和最大宽度
我的布局如下:Android 布局权重和最大宽度,android,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"
<?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的宽度来分配空间。我不知道如何使用布局权重“在168dp之前均匀分配空间”。我尝试使用maxWidth
,但不起作用。您应该使用
定义最大权重和。如果未指定,则总和由以下公式计算:
添加所有子项的布局权重。这可以用于
实例为单个子对象提供总可用空间的50%
将布局_权重设置为0.5,并将权重总和设置为1.0
......................
..............
...........
FYI
好的,android:minWidth
如果您使用android:layout\u height
在布局下方通过将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>
您是否尝试过为父布局分配一个android:weightSum?不,我不知道该怎么做这似乎并不完全是我想要的。我想将最大值设置为168dp。@greywolf82我假设android:minWidth不起作用。是的,当你设置重量时,似乎最小值和最大值都不起作用effect@greywolf82然后避免使用android:layout\u weight逻辑。是的,但是我怎么能说“设置最小宽度80dp,最大宽度168dp,然后分配另一个”?这不是我想要的。我希望空间均匀分布,但最大值为168dp。它不适用于此解决方案
<?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>