У меня есть ConstraintLayout с ImageView и 3 связанных TextViews со стилем цепочки spread_inside:
<android.support.design.card.MaterialCardView
android:layout_width = "match_parent"
android:layout_height = "wrap_content">
<android.support.constraint.ConstraintLayout
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:paddingBottom = "@dimen/space_normal"
android:paddingEnd = "@dimen/space_normal"
android:paddingStart = "@dimen/space_normal"
android:paddingTop = "@dimen/space_big">
<ImageView
android:id = "@+id/ivImage"
android:layout_width = "@dimen/feed_list_image_size"
android:layout_height = "@dimen/feed_list_image_size"
android:layout_marginBottom = "@dimen/space_normal"
android:contentDescription = "@null"
app:layout_constraintBottom_toBottomOf = "parent"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintTop_toTopOf = "parent"
app:layout_constraintVertical_bias = "0.0"
tools:src = "@color/debug_3" />
<TextView
android:id = "@+id/tvTitle"
android:layout_width = "0dp"
android:layout_height = "wrap_content"
android:layout_marginEnd = "@dimen/space_normal"
android:ellipsize = "end"
android:maxLines = "3"
android:textSize = "@dimen/text_size_big"
app:layout_constraintBottom_toTopOf = "@+id/tvContent"
app:layout_constraintEnd_toStartOf = "@+id/ivImage"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toTopOf = "parent"
app:layout_constraintVertical_chainStyle = "spread_inside"
app:textAllCaps = "true"
tools:text = "@tools:sample/lorem" />
<TextView
android:id = "@+id/tvContent"
android:layout_width = "0dp"
android:layout_height = "wrap_content"
android:layout_marginBottom = "@dimen/space_big"
android:layout_marginTop = "@dimen/space_normal"
android:ellipsize = "end"
android:maxLines = "4"
android:textColor = "@color/gray_600"
android:textSize = "@dimen/text_size_normal"
app:layout_constraintBottom_toTopOf = "@+id/tvDate"
app:layout_constraintEnd_toEndOf = "@+id/tvTitle"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toBottomOf = "@+id/tvTitle"
tools:text = "@tools:sample/lorem/random" />
<TextView
android:id = "@+id/tvDate"
style = "@style/AppTheme.ItemFeedList.Date"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_marginBottom = "@dimen/space_normal"
app:layout_constraintBottom_toBottomOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toBottomOf = "@+id/tvContent"
tools:text = "@tools:sample/date/hhmm" />
</android.support.constraint.ConstraintLayout>
</android.support.design.card.MaterialCardView>
Это дает красивый и гибкий макет в редакторе:
Но иногда вид сверху «выталкивается» за пределы ограничений, поэтому отрисовка текста неверна (обрезана). Это странно, потому что стиль цепочки spread_inside должен раздувать и сужать средний вид. Из Инспектор компоновки:
Что в этом плохого?
Попробуйте установить layout_height на вашем ConstraintLayout на wrap_content. Я подозреваю, что CardViews wrap_content и ConstraintLayouts match_parent конфликтуют друг с другом. ConstraintLayout - единственный дочерний элемент CardView, и все его представления имеют высоту wrap_content.
@plaskoff это не помогает
Вам может помочь изменение, внесенное в версию 1.1 ConstraintLayout. Попробуйте установить app:layout_constrainedHeight=”true” на проблемный TextView. Из руководство разработчика для ConstraintLayout:
WRAP_CONTENT : enforcing constraints (Added in 1.1)
If a dimension is set to WRAP_CONTENT, in versions before 1.1 they will be treated as a literal dimension -- meaning, constraints will not limit the resulting dimension. While in general this is enough (and faster), in some situations, you might want to use WRAP_CONTENT, yet keep enforcing constraints to limit the resulting dimension. In that case, you can add one of the corresponding attribute:
app:layout_constrainedWidth=”true|false”
app:layout_constrainedHeight=”true|false”
Помогает, спасибо! P.S. Я попытался установить app:layout_constraintHeight_default = "wrap", но он ничего не сделал (и устарел для версий 1.1+ ConstraintLayout)
точно такая же проблема, с которой я столкнулся