Android dataBinding – как использовать ресурс bool, чтобы вызвать видимость компоновки

В настоящее время у меня есть файл bool.xml в android, который выглядит так:

<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="showAds">true</bool> </resources> 

Теперь у меня есть файл layout.xml, который использует привязку данных. Я хочу показать или скрыть видимость adView на основе логических showAds, определенных выше. Пока у меня это:

  <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="@{@bool/showAds ? View.Visible:View:gone}" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-1234567/34343"> 

Но он не компилируется. Как я могу получить логическое значение, чтобы определить, показывать ли объявление или нет? Синтаксис неверен.

Solutions Collecting From Web of "Android dataBinding – как использовать ресурс bool, чтобы вызвать видимость компоновки"

Исправить синтаксис условия View.Visible: View: gone

 android:visibility="@{@bool/showAds ? View.VISIBLE:View.GONE}" 

И вам нужно импортировать View в раздел данных:

 <data> <import type="android.view.View"/> </data> 

Если вам не нравится добавлять импорт импорта (в каждом макете, где это необходимо), вы можете просто определить аннотированный метод @BindingConversion :

 @BindingConversion public static int convertBooleanToVisibility(boolean visible) { return visible ? View.VISIBLE : View.GONE; } 

Аннотированный метод может быть в любом файле Java в вашем проекте.

Тогда вы можете просто использовать

 android:visibility="@{@bool/showAds}"