我想在带有后缀的一行中显示尽可能大的数字,我需要自动调整大小。
我知道wrap_content
不适用于自动调整大小TextView
,我发现了一种可行的解决方法,但并非每次都能解决。
该值在第一次显示时被截断(它应在下面显示值:1553593328254
):
在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,但没有成功。