Как расширить второй TextView, если первый слишком длинный в ConstraintLayout - PullRequest
2 голосов
/ 16 марта 2020

У меня есть два TextViews рядом друг с другом внутри ConstraintLayout. У каждого из них есть два слова. Слова внутри них могут быть изменены текущей локалью.

В настоящее время каждый из них занимает одинаковое пространство по ширине, используя android:layout_weight="1android:layout_width="0dp"

Если текст в любом из них слишком длинный, чтобы поместиться в одну строку, Я хочу, чтобы они расширились до двух строк. Мне нужно расширить сам текст, а не TextView - это можно сделать, только если в тексте есть хотя бы два слова.

Есть ли способ сделать это?

expected behaviour

1 Ответ

1 голос
/ 18 марта 2020

Вам потребуется, чтобы макет продолжился, затем определите, имеет ли левый TextView две строки, и, если он есть, отрегулируйте правый TextView , чтобы он также занимал две строки. Следующий код является одним из способов сделать это. Вы можете поместить это в onCreate () .

val layout = findViewById<ConstraintLayout>(R.id.layout)
layout.doOnNextLayout {
    val textView1 = findViewById<TextView>(R.id.textView1) // Left view
    val textView2 = findViewById<TextView>(R.id.textView2) // Right view
    if (textView1.lineCount == 2) { // If left view has 2 lines, add newline to the right view.
        textView2.text = textView2.text.toString().replace(" ", "\n")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...