通过数据绑定 API 设置一个众所周知的属性值
Set via Data-Binding API a well known attribute value
我有一个来自自定义视图的自定义属性定义行:
<declare-styleable name="ExampleView">
<attr name="order">
<enum name="byValue" value="0" />
<enum name="byKey" value="1" />
</attr>
<!-- and some more attributes -->
</declare-styleable>
Android Studio 检测到这一点并为我提供了一个自动完成功能,这很棒。所以 xml 属性看起来像 app:order="byValue"
。但是,由于我想使用数据绑定 API 中的 BindingAdapter
,我需要将它与 @
符号一起使用,如下所示:app:order="@{byValue}"
,不幸的是,这无法编译。
然后我尝试使用我在内部使用的常量,如下所示:app:order="@{com.example.views.ExampleView.ORDER_BY_VALUE}"
,但这也无法编译。我可以只使用 app:order="@{0}"
,确保它有效,因为它是这样定义的,但是它不直观为什么我在那里使用 0
。
知道如何编写更具可读性的代码来解决这个问题吗?
需要为枚举值创建代码:
object Order {
const val BY_VALUE = 0
const val BY_KEY = 1
}
将包含这些枚举的 class / 对象导入到您的 XML:
<import type="com.example.Order" />
那你就可以参考了:
app:order="@{Order.INSTANCE.BY_KEY}"
我有一个来自自定义视图的自定义属性定义行:
<declare-styleable name="ExampleView">
<attr name="order">
<enum name="byValue" value="0" />
<enum name="byKey" value="1" />
</attr>
<!-- and some more attributes -->
</declare-styleable>
Android Studio 检测到这一点并为我提供了一个自动完成功能,这很棒。所以 xml 属性看起来像 app:order="byValue"
。但是,由于我想使用数据绑定 API 中的 BindingAdapter
,我需要将它与 @
符号一起使用,如下所示:app:order="@{byValue}"
,不幸的是,这无法编译。
然后我尝试使用我在内部使用的常量,如下所示:app:order="@{com.example.views.ExampleView.ORDER_BY_VALUE}"
,但这也无法编译。我可以只使用 app:order="@{0}"
,确保它有效,因为它是这样定义的,但是它不直观为什么我在那里使用 0
。
知道如何编写更具可读性的代码来解决这个问题吗?
需要为枚举值创建代码:
object Order {
const val BY_VALUE = 0
const val BY_KEY = 1
}
将包含这些枚举的 class / 对象导入到您的 XML:
<import type="com.example.Order" />
那你就可以参考了:
app:order="@{Order.INSTANCE.BY_KEY}"