Saya memiliki TextView dengan teks yang terdiri dari dua kata, di mana yang kedua adalah dinamis (seperti "Jumlah perangkat: xxxxxxxxxxxx". Saya ingin jika String terlalu panjang, itu akan ditampilkan seperti

Number of device:
xxxxxxxxxxxx

Sekarang seperti

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" />
2
lucagiordano 11 Mei 2021, 18:01

2 jawaban

Jawaban Terbaik

Anda perlu mengamati perubahan tata letak dalam kasus ini karena perubahan ketinggian karena nilai bawah akan berubah jika teks diatur ke dua baris.

hanya bekerja dengan 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);
1
R7G 12 Mei 2021, 14:06

Kerjakan saja :

TextView tv = findViewById(R.id.ObuTransitElementObuDeviceCode);
tv.setText("Number of device:\n"+dynamic_number);
0
ValiSpaceProgramming 11 Mei 2021, 17:18