Android数据绑定-如何使用bool资源触发布局可见性

Android数据绑定-如何使用bool资源触发布局可见性,android,data-binding,Android,Data Binding,我目前在android中有一个bool.xml文件,如下所示: <?xml version="1.0" encoding="utf-8"?> <resources> <bool name="showAds">true</bool> </resources> 真的 现在我有了一个layout.xml文件,它使用数据绑定。我想显示或隐藏基于上面定义的布尔showAds的adView的可视性。到目前为止,我有: <

我目前在android中有一个bool.xml文件,如下所示:

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

真的
现在我有了一个layout.xml文件,它使用数据绑定。我想显示或隐藏基于上面定义的布尔showAds的adView的可视性。到目前为止,我有:

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


但它不编译。如何让布尔值决定广告是否显示?语法错误

更正条件视图的语法。可见:视图:消失

android:visibility="@{@bool/showAds ? View.VISIBLE:View.GONE}"
您需要在数据部分导入视图:

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

在哪里可以找到这个
标记?@wutzebaer您可以创建嵌套在标记下的数据标记。请参见此处的数据绑定设置;您好,即使我直接传递已消失的值,表达式似乎也不起作用
android:visibility=“@{0x00000008}”
视图仍然无法打开有人能帮我解决这个问题吗?你知道怎么做两个吗?在可见和消失之间做出选择的人。另一个在可见和不可见之间选择的问题。好问题。我认为使用普通的android:visibility是不可行的,因为我不知道它如何知道到pick的转换当BindingConversion或BindingMethod看起来有点有限时,使用BindingAdapter。您可以生成自己的属性。例如:将
android:visibility
与BindingConversion一起用于visible/gone和
android:invisible
作为绑定适配器,在其中实际执行
view.setVisibility(布尔值)