android - ConstraintLayout:如何在不同大小的两个按钮之间居中文本
问题描述
我正在制作一个带有标题的对话框,其中包含一个“取消”按钮、一个标题,最后是一个“保存”按钮。见图片。标题被限制在按钮之间。但是,当其中一个按钮比另一个长时,标题会移动到一侧,因为它被告知要留在按钮之间的中间。
如何使标题视图在拖动手柄下方居中,同时让它一直扩展到按钮而不重叠它们?
谢谢!
解决方案
这是唯一可以设置标题而不在屏幕中心重叠的技巧
在隐形模式下使一个临时按钮与长按钮相同
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="long cancel"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="long cancel"
android:visibility="invisible"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="save"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/black"
android:gravity="center"
android:padding="@dimen/_10sdp"
android:text="title"
android:textColor="@color/white"
app:layout_constraintLeft_toRightOf="@id/btn1"
app:layout_constraintRight_toLeftOf="@id/btn3"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
编辑
这是另一种方式,但是当您的标题非常大时,这将是一团糟
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="long cancel"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/txt"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="save"
app:layout_constraintLeft_toRightOf="@id/txt"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/black"
android:gravity="center"
android:padding="@dimen/_10sdp"
android:text="title dfgfd gdg dfgdfg dfgdfg fdgfdfgd fgddf dfgdgdfgdfg dfg dfgfdg df"
android:textColor="@color/white"
app:layout_constraintLeft_toRightOf="@id/guideline"
app:layout_constraintRight_toRightOf="@id/guideline"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
</androidx.constraintlayout.widget.ConstraintLayout>
编辑
long cancel
如果您知道按钮的最大长度,则可以app:layout_constraintWidth_percent
根据TextView
该按钮宽度进行设置
<TextView
android:id="@+id/txt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/black"
android:gravity="center"
android:padding="@dimen/_10sdp"
android:text="title dfgfd gdg dfgdfg dfgdfg fdgfdfgd fgddf dfgdgdfgdfg dfg dfgfdg df"
android:textColor="@color/white"
app:layout_constraintLeft_toRightOf="@id/guideline"
app:layout_constraintRight_toLeftOf="@id/guideline"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.4" />
推荐阅读
- node.js - 如何在 Adonis Js 中查询数据透视表
- php - PHP 函数是否在执行以下代码之前完成运行?
- javascript - 如何找到前一个素数?
- python - python画一条线勾勒出两条线
- python - 如何在新数据集上应用 TensorFlow 文本分类?
- python - 在 WAF 构建系统中设置 Linux 环境变量
- sql - 尝试将数组存储到 sql 表中时出现语法错误
- unix - top: failed tty get in linux
- ruby - How should a Command Pattern inspired class be documented in YARD
- prolog - Where is the source sink of SWI-Prolog?