在Android的ConstraintLayout中将文本居中于父级

在Android的ConstraintLayout中将文本居中于父级,android,android-constraintlayout,Android,Android Constraintlayout,我想在Android的ConstraintLayout中实现一个非常简单的顶栏布局: 有一个后退按钮(可以隐藏),有一个右按钮(可以隐藏),中间有一个文本标题。strong>最重要的是,我想让文本在父对象中居中 但是,当我绑定视图的边框时,标题文本会从中心推送,因为左视图和右视图的大小不同: 如您所见,标题未在父项中居中。显然,工作解决方案中的文本也不应相互重叠,标题应省略。所以这就像是一个“先进的屏障”从两边推进——一个更大的会迫使标题变小,但是标题总是在中间。 一种方法是使左视图和右视图的

我想在Android的
ConstraintLayout
中实现一个非常简单的顶栏布局:

有一个后退按钮(可以隐藏),有一个右按钮(可以隐藏),中间有一个文本标题。strong>最重要的是,我想让文本在父对象中居中

但是,当我绑定视图的边框时,标题文本会从中心推送,因为左视图和右视图的大小不同:

如您所见,
标题
未在父项中居中。显然,工作解决方案中的文本也不应相互重叠,标题应省略。所以这就像是一个“先进的屏障”从两边推进——一个更大的会迫使标题变小,但是标题总是在中间。

一种方法是使左视图和右视图的宽度相等,其余的将提供给标题视图,但是我找不到一种方法,使两个视图在不同的区域的宽度相等

ConstraintLayout
中是否可能出现这种情况?在iOS的自动布局系统中很容易做到这一点,但它比安卓的ConstraintLayout功能强大得多。不过,我找不到一种方法,可以在相同宽度的不同区域创建两个视图

如果您想实现这样的目标,可以使用:

app:layout\u constraintWidth\u percent=“0.x”
根据屏幕大小告诉您的视图大小(并保持响应)

例如,类似这样的内容(我使用支持库制作,但它也可以与androidx一起使用):


现在,您的两个按钮正好占据屏幕宽度的10%,您可以告诉文本视图展开并占据剩余宽度(
android:layout\u width=“0dp”

但是如果我有非常大的文本呢? 在这种情况下,如果要保持布局的响应性,可以使用[ssp()库

android SDK提供了一个新的大小单位——ssp(可伸缩sp)。该大小单位根据sp大小单位(用于文本)随屏幕大小进行缩放。它可以帮助android开发人员支持多个屏幕

然而,我找不到一种方法,使两个观点在不同的领域等宽度

如果您想实现这样的目标,可以使用:

app:layout\u constraintWidth\u percent=“0.x”
根据屏幕大小告诉您的视图大小(并保持响应)

例如,类似这样的内容(我使用支持库制作,但它也可以与androidx一起使用):


现在,您的两个按钮正好占据屏幕宽度的10%,您可以告诉文本视图展开并占据剩余宽度(
android:layout\u width=“0dp”

但是如果我有非常大的文本呢? 在这种情况下,如果要保持布局的响应性,可以使用[ssp()库

android SDK提供了一个新的大小单位——ssp(可伸缩sp)。该大小单位根据sp大小单位(用于文本)随屏幕大小进行缩放。它可以帮助android开发人员支持多个屏幕

<?xml version="1.0" encoding="utf-8"?>
<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">


<Button
    android:id="@+id/button3"
    android:layout_width="0dp"
    app:layout_constraintWidth_percent="0.1"
    android:layout_height="wrap_content"
    android:text="<"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<TextView
    android:id="@+id/textView2"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:text="TextView"
    android:gravity="center"
    app:layout_constraintBottom_toBottomOf="@+id/button3"
    app:layout_constraintEnd_toStartOf="@+id/button4"
    app:layout_constraintStart_toEndOf="@+id/button3"
    app:layout_constraintTop_toTopOf="@+id/button3" />

<Button
    android:id="@+id/button4"
    android:layout_width="0dp"
    app:layout_constraintWidth_percent="0.1"
    android:layout_height="0dp"
    android:text="x"
    app:layout_constraintBottom_toBottomOf="@+id/button3"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="@+id/button3" />

</android.support.constraint.ConstraintLayout>