android - 在 ConstraintLayout 中等距分布视图
问题描述
我正在尝试ImageButton
在 ConstraintLayout 上制作 5,并且它们之间的间距相等,但是我遇到了一些问题来锚定它们并使其变得容易,例如:
我的xml代码:
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@drawable/sheet_shadow"
android:padding="5dp">
<ImageButton
android:id="@+id/btn1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="18dp"
android:layout_marginBottom="8dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:tint="@color/grey_40"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_more_vert" />
<ImageButton
android:id="@+id/btn2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="18dp"
android:layout_marginBottom="8dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:tint="@color/grey_40"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/btn1"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_more_vert" />
<ImageButton
android:id="@+id/btn3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="18dp"
android:layout_marginBottom="8dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:tint="@color/grey_40"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/btn2"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_more_vert" />
<ImageButton
android:id="@+id/btn4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="18dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:tint="@color/grey_40"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/btn5"
app:layout_constraintStart_toEndOf="@+id/btn3"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_more_vert" />
<ImageButton
android:id="@+id/btn5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="18dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="?attr/selectableItemBackgroundBorderless"
android:tint="@color/grey_40"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_more_vert" />
</android.support.constraint.ConstraintLayout>
解决方案
您应该创建链并设置:
app:layout_constraintHorizontal_chainStyle=”spread”
这里有一些关于使用 ConstraintLayout 创建链的资源: https ://constraintlayout.com/basics/create_chains.html
更新:
例子
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<ImageButton
android:id="@+id/imageView1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/imageView2"
app:layout_constraintHorizontal_chainStyle="spread"
android:src="@mipmap/ic_launcher"/>
<ImageButton
android:id="@+id/imageView2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:layout_constraintStart_toEndOf="@id/imageView1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/imageView3"
android:src="@mipmap/ic_launcher"/>
<ImageButton
android:id="@+id/imageView3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:layout_constraintStart_toEndOf="@id/imageView2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/imageView4"
android:src="@mipmap/ic_launcher"/>
<ImageButton
android:id="@+id/imageView4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:layout_constraintStart_toEndOf="@id/imageView3"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@id/imageView5"
android:src="@mipmap/ic_launcher"/>
<ImageButton
android:id="@+id/imageView5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:layout_constraintStart_toEndOf="@id/imageView4"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:src="@mipmap/ic_launcher"/>
推荐阅读
- apache-zookeeper - 如何让 Zookeeper 为 Druid 提供 IP 而不是主机名
- javascript - 如何使用户能够在我的聊天网站中发送和接收消息?
- ios - 创建可供整个 iOS 应用程序访问的网络侦听器
- windows - Rode NT-USB 麦克风升级到 Windows 10 18.09 后音质不佳(10 月更新)
- docker - AM572x - 使用 docker 在 A15 和 M4 之间访问 IPC
- c# - Unity - 无法让物体振动/悬停在原地?
- java - 如何列出空文件夹
- php - 如何更改我的表单以便只发布选定的字段
- javascript - 弹出窗口阻止程序在 IE 中触发 setTimeout 的原因
- visual-studio-2017 - VS2017 迁移到 Nuget PackageReference 的问题