我尝试在视图中动态隐藏/显示元素,因此我按照此示例Dynamically toggle visibility of layout elements with Android data-binding.
我用
我的第一个问题是错误消息“属性缺少Android命名空间”,但我找到的所有示例都没有提供命名空间
然而,我试图启动我的项目并得到另一个错误:
android:visibility="@{@bool/list_show_icon ? View.VISIBLE : View.GONE}"
Error:(22, 29) No resource found that matches the given name (at 'visibility' with value '@{@bool/list_show_icon ? View.VISIBLE : View.GONE}').
似乎他没有尝试评估表达式
答案 0 :(得分:1)
在LinearLayout
代码
layout
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View"/>
</data>
<LinearLayout>
</LinearLayout>
</layout>
答案 1 :(得分:0)
使用DataBinding
的第一条规则是您的XML根元素必须是<layout>
是<layout>
的一部分,而不是其他布局。在你的情况下它应该是
<layout>
<data> </data>
<LinearLayout>
</LinearLayout>
</layout>
答案 2 :(得分:0)
正如基肖尔已经写过的那样。
必须是根元素并包装整个布局+数据。
它的
yarn global add highcharts-export-server
无论如何,如果使用数据绑定,我建议使用可观察的布尔/整数,而不是使用布局中的可见性逻辑。这可以使用类似
的ViewModel来解决<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<import type="android.view.View" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="56dp"
android:orientation="horizontal"
android:paddding="8dp">
</LinearLayout>
</layout>
并在ViewModel(mvvm)中使用:
<data>
<variable name="viewModel" type="YourViewModelClass" />
</data>
<LinearLayout> ... <TextView android:visibility="@{viewModel.isVisible}" />
</LinearLayout>
它只是更干净,但不影响性能或任何东西。