Intereting Posts
Диалог подтверждения Android возвращает true или false Есть ли степень магистра в области разработки мобильных приложений, таких как android? Как настроить функцию Android Direct Reply Notification на устройствах до Android N? Синхронизация двух ViewPagers с помощью OnPageChangeListener Что такое хорошая библиотека для разбора математических выражений в java? AsyncTask: doInBackground не вызван Установите «dev» сборку приложения для Android на боковой рыночной версии Позиционирование составной части в TextView? RuntimeException в Gson parsing JSON: Не удалось вызвать защищенный java.lang.ClassLoader () без аргументов Как отключить Keyguard и отобразить активность для пользователя при срабатывании приемника SCREEN_ON? Как создать собственное мобильное приложение Magento для Android и iphone Как программно загрузить Html-страницу в android и получить ее Html? Как отправить данные с помощью библиотеки okhttp с типом контента x-www-form-urlencoded? Android эмулятор64-x86 зависает во время процесса загрузки Visual Studio 2015 не устанавливает Android SDK для Xamarin

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}"