Временное решение для отображения текста с автоматическим изменением размера как усеченного содержимого wrap_content - PullRequest
0 голосов
/ 26 марта 2019

Я хочу отобразить как можно большее число в одной строке с суффиксом, мне нужно автоматически изменить размер.

Я знаю, wrap_content недоступно с autosize 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>

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
}

Я пытался это решение , но безуспешно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...