使用数据绑定设置视图可见性

新手上路,请多包涵

尝试使用自定义变量设置 View 的可见性,但出现错误: Identifiers must have user defined types from the XML file. visible is missing it 。是否可以使用数据绑定设置视图可见性?谢谢。

 <data>
    <variable
        name="sale"
        type="java.lang.Boolean"/>
</data>

<FrameLayout android:visibility="@{sale ? visible : gone}"/>

原文由 Konstantin Konopko 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 343
2 个回答

Android Developer Guide 中所述,您需要这样做:

 <data>
    <import type="android.view.View"/>
    <variable
        name="sale"
        type="java.lang.Boolean"/>
</data>

<FrameLayout android:visibility="@{sale ? View.GONE : View.VISIBLE}"/>

原文由 David Artmann 发布,翻译遵循 CC BY-SA 3.0 许可协议

问题是 visibilityInteger View ,这意味着你有两种方法可以完成这项工作:

  1. 使用 View.VISIBLEView.GONE 常量。 https://developer.android.com/topic/libraries/data-binding/index.html#imports
  2. visibility 定义一个自定义设置器,它采用 Booleanhttps://developer.android.com/topic/libraries/data-binding/index.html#custom_setters

可能的实现:

 @BindingAdapter("android:visibility")
public static void setVisibility(View view, Boolean value) {
    view.setVisibility(value ? View.VISIBLE : View.GONE);
}

这将使 <FrameLayout android:visibility="@{sale}"/> 工作。

原文由 Kiskae 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题