Я хочу отобразить как можно большее число в одной строке с суффиксом, мне нужно автоматически изменить размер.
Я знаю, wrap_content
недоступно с autosize 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>
In 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>
В размерах. 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
}
Я пытался это решение , но безуспешно.