Я пытаюсь получить ConstraintLayout
с Barrier
, работающим программно.Я использую анко для моего кода.Все работает нормально, но как только я пытаюсь использовать Barrier
, представление, подключенное к Barrier
, устанавливается сверху представления, а не под тем, что я сказал.Вот код:
constraintLayout {
imageView = imageView {
id = View.generateViewId()
backgroundColorResource = R.color.black
scaleType = ImageView.ScaleType.CENTER_CROP
}.lparamsMargin(width = matchParent, height = imageHeight)
val gradientView = view {
id = View.generateViewId()
background = getGradient(Color.TRANSPARENT, Color.BLACK, 0.5f)
}.lparams(width = matchParent, height = gradientHeight) {
bottomToBottom = imageView.id
}
titleTextView = textView {
id = View.generateViewId()
typeface = context.font(R.font.value_regular)
textSize = 40f
textColor = Color.WHITE
gravity = Gravity.CENTER
horizontalPadding = Dimensions.mediumViewPadding
}.lparams(width = matchParent) {
topToTop = imageView.id
bottomToBottom = imageView.id
}
dateTextView = textView {
id = View.generateViewId()
typeface = context.font(R.font.value_regular)
textSize = 21f
textColor = Color.WHITE
gravity = Gravity.CENTER
horizontalPadding = Dimensions.mediumViewPadding
}.lparams(width = matchParent) {
bottomToTop = titleTextView.id
bottomMargin = Dimensions.smallViewPadding
}
subtitleTextView = textView {
id = View.generateViewId()
typeface = context.font(R.font.value_regular)
textSize = 16f
textColorResource = R.color.textColorOffWhite
gravity = Gravity.CENTER
horizontalPadding = Dimensions.mediumViewPadding
}.lparams(width = matchParent) {
topToBottom = titleTextView.id
topMargin = Dimensions.smallViewPadding
}
val textGuideline = guideline {
id = View.generateViewId()
}.lparams(width = matchParent) {
topToTop = gradientView.id
bottomToBottom = gradientView.id
verticalBias = 0.7f
}
val textBarrier = barrier {
id = View.generateViewId()
referencedIds = intArrayOf(subtitleTextView.id, textGuideline.id)
type = Barrier.BOTTOM
}.lparams(width = matchParent, height = wrapContent)
textTextView = textView {
id = View.generateViewId()
typeface = context.font(R.font.value_regular)
textSize = 21f
textColorResource = R.color.textColorOffWhite
lineSpacingMult = 1.38f
gravity = Gravity.CENTER
horizontalPadding = Dimensions.mediumViewPadding
}.lparams(width = matchParent, height = wrapContent) {
topToBottom = textBarrier.id
}
}.lparams(width = matchParent, height = wrapContent)
То, что я пытаюсь сделать, это позволить тексту перекрывать изображение и градиент, если заголовок не слишком большой и не толкает текст ниже.Если я поставлю topToBottom = textGuideline.id
, он будет работать, как и ожидалось, но если заголовок слишком длинный, я хочу, чтобы текст был ниже.
Версия ConstraintLayout
Я использую 2.0.0-бета1.