Я пытаюсь создать TextView
таким образом, чтобы он оборачивал содержимое до максимальной ширины. Следующий вид кода достигает этого, пока он не будет использован в RecyclerView
. Кажется, TextView
не измеряет ширину после того, как я изменил текст в onBindViewHolder()
.
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/message"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_max="wrap"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.72" />
</androidx.constraintlayout.widget.ConstraintLayout>
Однако обратите внимание, как это работаетхорошо, если я вызову requestLayout()
на TextView
в onBindViewHolder()
ниже:
Обновление: Следующий код в onBindViewHolder()
тоже работает.
ConstraintSet().apply {
clone(holder.parent)
applyTo(holder.parent)
}
parentбыть ConstraintLayout
.
Кто-нибудь понимает, что здесь происходит? Это ошибка в ConstraintLayout
? Вызывать requestLayout()
в onBindViewHolder()
- плохая практика, и я не хочу этого делать.