约束布局基线到基线的自动调整大小

dan*_*tov 5 android autosize android-constraintlayout

我正在尝试按基线对齐2个textview,并同时将autosize用作textsize。这是简化的代码示例。第一个textview具有较大的尺寸,因此textsize会自动设置为较大的值。第二个textview小于第一个,因此自动确定的textsize较小。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">

<TextView
    android:id="@+id/text1"
    android:layout_width="200dp"
    android:layout_height="100dp"
    android:text="text1"
    android:maxLines="1"
    android:autoSizeTextType="uniform"
    android:autoSizeMaxTextSize="200sp"
    android:autoSizeMinTextSize="2sp"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toLeftOf="@+id/text2"
    app:layout_constraintTop_toTopOf="parent"/>

<TextView
    android:id="@+id/text2"
    android:layout_width="50dp"
    android:layout_height="20dp"
    android:text="text2"
    android:maxLines="1"
    android:autoSizeTextType="uniform"
    android:autoSizeMaxTextSize="200sp"
    android:autoSizeMinTextSize="2sp"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintLeft_toRightOf="@+id/text1"
    app:layout_constraintBaseline_toBaselineOf="@id/text1"/>
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

示例代码的结果

问题是,当我使用autoSizeTextType时,layout_constraintBaseline_toBaselineOf似乎停止工作

如果有人能为我指出正确的方向,那就太好了。我是否理解错误如何使用constraintlayout?还是只是baseline_tobaseline无法与自动调整大小一起使用?

Fil*_*nco 1

尝试autoSize从文本视图中删除 并设置TextView文本大小。事情会自行开始解决。至少这对我有用。

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="56dp"
        android:maxLines="1"
        android:text="text1"
        android:textSize="100sp"
        app:layout_constraintEnd_toStartOf="@+id/text2"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
    <TextView
        android:id="@+id/text2"
        android:layout_width="50dp"
        android:layout_height="20dp"
        android:text="text2"
        android:maxLines="1"
        android:autoSizeTextType="uniform"
        android:autoSizeMaxTextSize="200sp"
        android:autoSizeMinTextSize="2sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/text1"
        app:layout_constraintBaseline_toBaselineOf="@id/text1"
    />
Run Code Online (Sandbox Code Playgroud)

  • 是的,你说得对,如果我们使用具体的 textSize,Baseline_toBaseline 就可以工作,但问题的关键是如何同时使用 Baseline_toBaseline 和 autosize。 (6认同)