Come per http://developer.android.com/tools/data-binding/guide.html#imports, siamo in grado di avere tali espressioni semplici in Visibilità:dati Android Binding: visibilità sul includono tag
<TextView
..
android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"/>
Ma quando cerco di fare lo stesso in un tag include
, in questo modo:
<include
android:id="@+id/image_layout"
layout="@layout/image_layout"
android:visibility="@{notification.notifType == 0 ? View.VISIBLE : View.GONE}"/>
Allora Studio non solo mostra l'espressione in rosso, ma sulla costruzione dà il seguente errore nella classe di legame generato automaticamente:
Error:(138, 29) error: cannot find symbol method setVisibility(int)
Ecco dove si verifica l'errore nella classe di legame auto-generata
// batch finished
if ((dirtyFlags & 0x3L) != 0) {
// api target 1
this.imageLayout.setVisibility(NotifTypeNotificatio1);
}
imageLayout.executePendingBindings();
ho il sospetto che è necessario che 'Android: espressione visibility' di essere sulla vista radice della risorsa' image_layout', passando sopra 'notifica d'o' notification.notifType'. – CommonsWare
@CommonsWare Sì. Ha funzionato. Ma il layout incluso è riutilizzabile, quindi non sono molto interessato a impostare la visibilità nella vista radice di quel layout. E senza dubbio riduce la leggibilità. Sarebbe davvero bello avere visibilità lavorando sul tag include stesso. –