android - TextView 转到空间中的新行

标签 android textview

我有一个 TextView,其中的文本由两个单词组成,其中第二个单词是动态的(例如“设备编号:xxxxxxxxxxxx”。我希望如果字符串太长,它会显示为

Number of device:
xxxxxxxxxxxx

现在就像

Number of device: xxxxxxx
xxx
<TextView
                android:id="@+id/ObuTransitElementObuDeviceCode"
                android:layout_marginTop="6dp"
                android:layout_marginStart="16dp"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/empty_text_placeholder"
                android:breakStrategy="balanced"
                android:textAlignment="textEnd" />

最佳答案

在这种情况下,您需要观察布局变化,因为如果文本设置为两行,由于高度变化,底部值也会发生变化。

仅使用wrap_content

TextView tvDevice = findViewById(R.id.ObuTransitElementObuDeviceCode);
tvDevice.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
            @Override
            public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
                if(bottom != oldBottom){
                    String s = tvDevice.getText().toString();
                    if(!s.contains("\n"))tvDevice.setText(s.replace(":",":\n"));
                }
            }
        });
tvDevice.setText("Number of device:\n"+dynamic_number);

关于android - TextView 转到空间中的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67489402/

相关文章:

java - 安卓获取序列号

android - 从 TextView 上的超链接打开对话框 - Android

android - Android 中的文本分页

android - 从 Activity 返回时刷新 TextView

android - 如何使用后退按钮显示上一个 ListView

java - 为不同类型的对象反序列化 JSON 数据

java - 创建新 Activity 后 TextView 不更新

java - 如何更改其他 Activity 的文本?

android - 我如何在不丢失任何数据的情况下迁移 Realm - Kotlin

java - 错误和应用程序停止不幸的是,StrictMode.ThreadPolicy() 也不起作用