Согласно http://developer.android.com/tools/data-binding/guide.html#imports, мы можем иметь такие простые выражения в видимости:Android Data Binding: видимость на включает тег
<TextView
..
android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"/>
Но когда я пытаюсь сделать то же самое в include
тега, например так:
<include
android:id="@+id/image_layout"
layout="@layout/image_layout"
android:visibility="@{notification.notifType == 0 ? View.VISIBLE : View.GONE}"/>
Тогда студия не только показывает выражение в красном цвете, но при строительстве он дает следующее сообщение об ошибке в связывании класса автоматически генерируемый:
Error:(138, 29) error: cannot find symbol method setVisibility(int)
Вот где ошибка происходит в связующей классе автоматически генерируемой
// batch finished
if ((dirtyFlags & 0x3L) != 0) {
// api target 1
this.imageLayout.setVisibility(NotifTypeNotificatio1);
}
imageLayout.executePendingBindings();
Я подозреваю, что вам нужно, что 'андроида: выражение visibility' быть на корневой вид на' image_layout' ресурса, проходя через 'notification' или' notification.notifType'. – CommonsWare
@CommonsWare Да. Это сработало. Но включенный макет многоразовый, поэтому я не очень увлекаюсь настройкой видимости в корневом представлении макета. И это, без сомнения, снижает читаемость. Было бы очень приятно получить видимость, работая над тегом include. –