我制作了一个片段,其中 4 个按钮以菜单的形式水平放置。看起来像这样:
编码:
<Button
android:id="@+id/button"
android:layout_width="86dp"
android:layout_height="50dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="0dp"
android:text="button1"
android:textSize="10sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button2"
android:layout_width="86dp"
android:layout_height="50dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="0dp"
android:text="button2"
android:textSize="10sp"
app:layout_constraintLeft_toRightOf="@+id/button"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button3"
android:layout_width="86dp"
android:layout_height="50dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="0dp"
android:text="button3"
android:textSize="10sp"
app:layout_constraintLeft_toRightOf="@+id/button2"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button4"
android:layout_width="86dp"
android:layout_height="50dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginTop="0dp"
android:text="button4"
android:textSize="10sp"
app:layout_constraintLeft_toRightOf="@+id/button3"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
我启动模拟器并看到这张图片:
如何让它在一行中出现在不同的屏幕上?


要将多个小部件放在一个链(链)中,
ConstraintLayout以防它们自己的宽度 (wrap_content) 不允许它们与缩进匹配,必须指定小部件的宽度match_constraint(在 AS 3 可视化编辑器中,这对应于markup ),那么小部件将平均划分空间。如果某些小部件的大小应该与其他小部件不同(例如,其中一个按钮的宽度很大),那么小部件还需要额外指定
layout_constraintHorizontal_weight指定小部件相对于链中其他小部件大小的参数(例如,如果链中的所有小部件的约束权重 = 1 且其中一个 = 2,则此小部件的宽度将是其他小部件的两倍)。有关此主题的文档(第 3 项)。
例子:
PS:以绝对值(as
android:layout_width="86dp")指定小部件的大小是一种不好的做法,因为这样的标记在具有不同屏幕像素密度的设备上看起来会有所不同,并且这样的标记不会是通用的。建议使用wpap_content等match_parent。响应式布局属性。PPS:Android 中的小部件网格设置为8dp,这意味着所有小部件尺寸和填充必须是 8 的倍数才能获得正确的视觉感知。例如,一个小部件的垂直尺寸可能是 48dp(由
wrap_content大多数小部件自动设置),但绝不是 50dp。