android - 将文本居中在父级居中但不在 TextView 中
问题描述
我有一个工具栏视图的布局,其中左侧有一个 ImageView,中间有一个 TextView,右侧有一个零,一个或两个 ImageView。而且我需要将 TextView 的文本居中放在窗口的中心,而不是在左右图标之间的空间中心。
这是我的布局代码
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
tools:background="@color/darkGreyTextColor">
<ImageView
android:id="@+id/leftIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@drawable/ic_hamburger" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/rightBarrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="left"
app:constraint_referenced_ids="rightFirstIcon,rightSecondIcon" />
<ImageView
android:id="@+id/rightFirstIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintBottom_toBottomOf="@+id/rightSecondIcon"
app:layout_constraintEnd_toStartOf="@+id/rightSecondIcon"
app:layout_constraintTop_toTopOf="@+id/rightSecondIcon"
tools:srcCompat="@drawable/ic_locate"
tools:visibility="visible" />
<ImageView
android:id="@+id/rightSecondIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="16dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@drawable/ic_search"
tools:visibility="visible" />
<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" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:maxLines="1"
android:text="@{viewModel.navigationStatus.topNavigationTitle}"
android:textColor="@color/white"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/rightBarrier"
app:layout_constraintStart_toEndOf="@+id/leftIcon"
app:layout_constraintTop_toTopOf="parent"
tools:text="Test small text"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
我需要做什么才能始终将 TextView 中的文本居中以在窗口上居中?
解决方案
说UI,现在实现的是最好的,但是如果你坚持在所有情况下都让它居中父级,那很简单,只要让布局依赖引用父级即可:
app:layout_constraintEnd_toStartOf="parent"
app:layout_constraintStart_toEndOf="parent"
推荐阅读
- java - 如何显示字符串中的PDF?
- python - 如何将列表中的键值对列表转换为python中的字典
- c# - 我正在尝试通过脚本更改我的 HingeJoint2D 的电机速度,它会生成一个随机值,但不会将其应用于组件
- javascript - 如何设置当前日期
- json - 使用 PHP 在 Google Api 的 Json 中检索值的问题(Json 已损坏,我不明白为什么)
- blender - GLTF 和 USDZ 重复和缩放纹理问题(平铺纹理)
- c++ - 用非原子更新原子变量,反之亦然
- python-3.x - SSH 登录到 Digitalocean Droplet 没有响应
- text - 使用Javascript从pdf中提取特定部分的文本?
- multithreading - 多线程代码中是否有必要使用原子标志?