Android TextView 中的文本应从第一行开始

Text in Android TextView should start in the first line

我正在使用带有一些 TextView 的 constrainedLayout。当 textViews 中的文本覆盖两行时,它看起来没问题。但是当文本只转换一行时,文本不会从第一行开始。我添加了一个截图:

所以基本上我想要的是将黄色标记的文本行向上移动一级,以便标签词(鼻子、完成)和文本之间的边距不那么高。它应该看起来像“品味”文本视图。这是 TextView 的 XML 代码:

<TextView
        android:id="@+id/tvNoseLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:gravity="center"
        android:textSize="16sp"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.489"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.36"
        android:textStyle="bold"
        android:text="@string/Nose"
        />

    <TextView
        android:id="@+id/tvNoseDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        
        android:gravity= "fill_vertical"
        android:textSize="14sp"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.489"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.41"

        />

    <TextView
        android:id="@+id/tvTasteLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="16sp"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.489"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.47"
        android:textStyle="bold"
        android:text="@string/Taste"
        />

    <TextView
        android:id="@+id/tvTasteDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="14sp"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.489"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.52"

       />

    <TextView
        android:id="@+id/tvFinishLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="16sp"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.489"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.58"
        android:textStyle="bold"
        android:text="@string/Finish"
       />

    <TextView
        android:id="@+id/tvFinishDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="14sp"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.489"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.63"

        />

你知道我该怎么做吗?我尝试了不同的重力(开始,fill_vertical)但它没有帮助。我会很感激每一条评论。

你应该在你的 TextView 中写这个:

android:gravity="开始" 要么 android:gravity="开始|中心"

您可以使用 textAlignment 来获得您想要的,并将 android:layout_width 更改为 match_parent。

<TextView
    android:id="@+id/tvNoseDescription"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAlignment="center" // change the value to whatever you want ( ctrl + space ).
    ...
    ...

您的布局过于依赖 app:layout_constraintVertical_bias。要得到你想要的垂直分布,最好使用ConstraintLayoutchains。对于您的布局,我建议使用垂直打包链并消除垂直偏差和重力。像这样:

<androidx.constraintlayout.widget.ConstraintLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/tvNoseLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/Nose"
        android:textSize="16sp"
        android:textStyle="bold"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toTopOf="@+id/tvNoseDescription"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_chainStyle="packed" />

    <TextView
        android:id="@+id/tvNoseDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:gravity="fill_vertical"
        android:text="Soft and rounded with fruity notes of red apple"
        android:textSize="14sp"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toTopOf="@+id/tvTasteLabel"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tvNoseLabel" />

    <TextView
        android:id="@+id/tvTasteLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/Taste"
        android:textSize="16sp"
        android:textStyle="bold"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toTopOf="@+id/tvTasteDescription"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tvNoseDescription" />

    <TextView
        android:id="@+id/tvTasteDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:gravity="center"
        android:text="A fine Sherried character, fruity aromas balanced with rich chovolate"
        android:textSize="14sp"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toTopOf="@+id/tvFinishLabel"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/tvTasteLabel" />

    <TextView
        android:id="@+id/tvFinishLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="@string/Finish"
        android:textSize="16sp"
        android:textStyle="bold"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toTopOf="@+id/tvFinishDescription"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tvTasteDescription" />

    <TextView
        android:id="@+id/tvFinishDescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:gravity="center"
        android:text="Warm and lingering. Sweet and spoicy"
        android:textSize="14sp"
        app:fontFamily="@font/paprika"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/tvFinishLabel" />

</androidx.constraintlayout.widget.ConstraintLayout>

外观如下: