Сообщение об ошибке сообщает, что значение свойства макета должно начинаться с @layout
. Исходя из этого, невозможно применить желаемую логику c.
Однако существуют и другие решения.
Вы можете выбрать один включенный макет (поскольку они очень похожи) и привязать значение isDts3
к включению, так же, как у вас есть для значений суммы.
например,
<include
android:id="@+id/ic_amountContainer"
layout="@layout/layout_amount_edittext_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
app:amountDefault="@{viewModel.preApprovedAmountDefault}"
app:amountMaxLength="@{safeUnbox(viewModel.preApprovedAmountMaxLength)}"
app:isDts3="@{viewModel.isDts3}"
app:layout_constraintTop_toBottomOf="@id/tv_preApproved" />
А затем используйте значение внутри макета, чтобы установить видимость полей, которые вы не хотите видеть. Например,
android:visibility="@{isDts3 ? View.GONE : View.VISIBLE}"
или другая альтернатива:
Имейте два отдельных тега включения внутри основного макета и вместо них установите видимость. Я бы сказал, что это менее желательно, так как вы увеличиваете размер и сложность макета без необходимости, но решать вам.