我有一个 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/