android - 通过 Data-Binding API 设置一个众所周知的属性值

标签 android android-databinding android-attributes android-binding-adapter

我有一个来自自定义 View 定义行的自定义属性:

<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" .但是,由于我想使用 BindingAdapter从数据绑定(bind) API,我需要将它与 @ 一起使用像这样签名: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
}
将包含这些枚举的类/对象导入您的 XML:
<import type="com.example.Order" />
然后你可以引用它们:
app:order="@{Order.INSTANCE.BY_KEY}"

关于android - 通过 Data-Binding API 设置一个众所周知的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37233007/

相关文章:

java - Android 的 XSD 验证

php - android/php 记录没有插入到 mysql

android - 使用数据绑定(bind)将百分比分配给 PercentFrameLayout

android - 自定义属性未在样式和主题中解析

android - 定义自定义属性

android - 使用 Path 从 Bitmap 中剪切区域

安卓导航图

android - Kotlin 中的数据绑定(bind) + Room。如何在 Kotlin 中绑定(bind)数据类?

android - ConstraintLayout Ratio 绑定(bind)有宽度但没有高度

android - 将 ?attr/selectableItemBackground 添​​加到 View 并设置背景颜色