有没有办法在视图创建期间通过数据绑定读取视图属性?
Is there a way to read a view attribute via databinding during view creation?
我正在使用数据绑定并尝试编写一些设置。我有一个视图,我想通过自定义属性(传入枚举)来确定其布局。例如,传入 Setting.CHECKBOX
或 Setting.SWITCH
应该让我为视图膨胀适当的控件。视图定义如下:
<data>
<import type="com.mypackage.ui.SettingView.SettingControl" />
<SettingView
android:id="@+id/setting_foo
android:layout_width="match_parent"
android:layout_height="wrap_content"
setting:control="@{Setting.CHECKBOX} />
...
有没有一种方法可以在布局膨胀之前读取 setting:control
属性?根据设置,我想指定如何给 SettingView 充气。
我知道我可以通过自定义实现 attributes/styleables,但我想知道是否可以通过数据绑定实现。
没有。为了在inflation期间查看属性值,不能使用数据绑定语法。数据绑定将从 XML 中剥离值并将其添加到生成的绑定代码中。
相反,将属性添加到 attrs.xml 文件并使用正常语法分配值。然后,您可以使用 context.obtainedStyledAttributes()
读取属性并通过 TypedArray
.
访问值
我正在使用数据绑定并尝试编写一些设置。我有一个视图,我想通过自定义属性(传入枚举)来确定其布局。例如,传入 Setting.CHECKBOX
或 Setting.SWITCH
应该让我为视图膨胀适当的控件。视图定义如下:
<data>
<import type="com.mypackage.ui.SettingView.SettingControl" />
<SettingView
android:id="@+id/setting_foo
android:layout_width="match_parent"
android:layout_height="wrap_content"
setting:control="@{Setting.CHECKBOX} />
...
有没有一种方法可以在布局膨胀之前读取 setting:control
属性?根据设置,我想指定如何给 SettingView 充气。
我知道我可以通过自定义实现 attributes/styleables,但我想知道是否可以通过数据绑定实现。
没有。为了在inflation期间查看属性值,不能使用数据绑定语法。数据绑定将从 XML 中剥离值并将其添加到生成的绑定代码中。
相反,将属性添加到 attrs.xml 文件并使用正常语法分配值。然后,您可以使用 context.obtainedStyledAttributes()
读取属性并通过 TypedArray
.