Android autoSize 截断TextView底行的文字

Android autoSize cuts off text in TextView bottom line

我的布局中有这样的文本视图:

<com.google.android.material.textview.MaterialTextView
                android:id="@+id/text_body"
                style="@style/TvFontSize"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_margin="10dp"
                android:justificationMode="inter_word"
                android:textColor="@color/gray_color"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@id/text_header" />

有这样的风格:

<style name="TvFontSize">
    <item name="android:autoSizeMaxTextSize">100sp</item>
    <item name="android:autoSizeMinTextSize">16sp</item>
    <item name="android:autoSizeStepGranularity">2sp</item>
    <item name="android:autoSizeTextType">uniform</item>
</style>

长文本被截断,可以看到:

完整布局如下:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:overScrollMode="never"
        android:scrollbars="none">

        <androidx.constraintlayout.widget.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/bottom_nav_color"
            tools:context=".pollsModule.IntroFinalFragment">

            <com.google.android.material.appbar.AppBarLayout
                android:id="@+id/toolbarContainer"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent">

                <androidx.appcompat.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    app:subtitleTextAppearance="@style/Toolbar.SubtitleText"
                    app:titleTextAppearance="@style/Toolbar.TitleText">

                    <TextView
                        android:id="@+id/polls_title"
                        style="@android:style/TextAppearance.Holo.Widget.ActionBar.Title.Inverse"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:maxLines="2"
                        android:textAlignment="center" />
                </androidx.appcompat.widget.Toolbar>
            </com.google.android.material.appbar.AppBarLayout>


            <View
                android:id="@+id/divider"
                android:layout_width="match_parent"
                android:layout_height="2dp"
                android:layout_marginTop="3dp"
                android:background="@color/polls_color"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@id/toolbarContainer" />

            <com.google.android.material.textview.MaterialTextView
                android:id="@+id/text_header"
                style="@style/TvFontSize"
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:layout_margin="10dp"
                android:textAlignment="center"
                android:textColor="@color/gray_color"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@id/divider" />

            <com.google.android.material.textview.MaterialTextView
                android:id="@+id/text_body"
                style="@style/TvFontSize"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_margin="10dp"
                android:inputType="textMultiLine"
                android:justificationMode="inter_word"
                android:singleLine="false"
                android:text="dfjjnfdjnfdjndfjnfdjfjdnjnfdjndfdfjfdjnfnjddfjjnfdjnfdjndfjnfdjfjdnjnfdjndfdfjfdjnfnjddfjjnfdjnfdjndfjnfdjfjdnjnfdjndfdfjfdjnfnjddfjjnfdjnfdjndfjnfdjfjdnjnfdjndfdfjfdjnfnjddfjjnfdjnfdjndfjnfdjfjdnjnfdjndfdfjfdjnfnjddfjjnfdjnfdjndfjnfdjfjdnjnfdjndfdfjfdjnfnjddfjjnfdjnfdjndfjnfdjfjdnjnfdjndfdfjfdjnfnjddfjjnfdjnfdjndfjnfdjfjdnjnfdjndfdfjfdjnfnjddfjjnfdjnfdjndfjnfdjfjdnjnfdjndfdfjfdjnfnjddfjjnfdjnfdjndfjnfdjfjdnjnfdjndfdfjfdjnfnjd"
                android:textColor="@color/gray_color"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@id/text_header" />


            <com.google.android.material.button.MaterialButton
                android:id="@+id/next_text"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_alignParentBottom="true"
                android:layout_margin="10dp"
                android:layout_marginTop="10dp"
                android:maxLines="1"
                android:textAllCaps="false"
                android:textColor="@color/white"
                app:autoSizeMaxTextSize="16sp"
                app:autoSizeMinTextSize="6sp"
                app:autoSizeStepGranularity="2sp"
                app:autoSizeTextType="uniform"
                app:backgroundTint="@color/colorAccent"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/text_body" />

        </androidx.constraintlayout.widget.ConstraintLayout>
    </ScrollView>
</layout>

我无法想象如何修复它。我尝试使用:

android:inputType="textMultiLine"
android:singleLine="false"

但这对我没有帮助:(

您的 TextView 应该将高度设置为 wrap_content 而不是 0dp...

android:layout_height="wrap_content"

此属性会影响您的 TextView。只需从 style 部分删除此属性。

<item name="android:autoSizeTextType">uniform</item>

用于启用 autoSizeTextType。你必须让你的 textView 高度达到固定尺寸,例如 android:layout_height="300dp"match parent

希望对您有所帮助。

谢谢@Andrew 的澄清。