解决方法:将自动调整大小的文本显示为wrap_content截断内容

时间:2019-03-26 09:46:43

标签: android textview autosize android-textview-autosize

我想在带有后缀的一行中显示尽可能大的数字,我需要自动调整大小。

我知道wrap_content不适用于自动调整大小TextView,我发现了一种可行的解决方法,但并非每次都能解决。 该值在第一次显示时被截断(它应在下面显示值:1553593328254):

enter image description here

在layout.xml中

<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:background="#cccccc"
        android:layout_height="100dp">
    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_above="@+id/label"
            android:layout_alignParentTop="true"
            android:orientation="horizontal">
        <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/value"
                style="@style/BigValue"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="start|bottom"
                android:text="123456789"/>
        <TextView
                android:id="@+id/unit"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="8dp"
                android:textSize="15sp"
                android:text="%" />
    </LinearLayout>
    <TextView
            android:id="@+id/label"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:text="Label" />
</RelativeLayout>

在styles.xml中

<style name="BigValue">
    <item name="android:maxLines">1</item>
    <item name="autoSizePresetSizes">@array/big_value_autosize</item>
    <item name="autoSizeTextType">uniform</item>
    <item name="android:includeFontPadding">false</item>
    <item name="android:lines">1</item>
</style>

在dimens.xml中

<array name="big_value_autosize">
    <item>40sp</item>
    <item>50sp</item>
</array>

我的活动测试代码(Kotlin)

value.setOnClickListener {
    val time = Date().time.toString()
    value.text = time
    label.text = time
}

我尝试了this solution,但没有成功。

0 个答案:

没有答案