使用Kotlin将自定义属性添加到android View?

时间:2019-06-03 22:24:24

标签: android kotlin android-view

我知道可以通过创建自己的类来使用Kotlin创建自定义属性,但是是否可以在不扩展View类的情况下向Android View分配自定义属性?

我正在尝试创建一个order属性,该属性将为1、2或3:

fun View.setOrder(order: Int){
    // not sure what to put here
}

有什么主意吗?

1 个答案:

答案 0 :(得分:2)

  

我正在尝试创建一个1、2或3的订单属性

您的语法用于扩展功能,而不是扩展属性。

如果要扩展名var,请使用:

var View.order: Int
  get() = getTag(R.id.tag_order) as Int
  set(value: Int) = setTag(R.id.tag_order, value)

在其中定义名为id的{​​{1}}资源。我们需要视图标记在整个应用程序中是唯一的,并且各种库都使用标记,因此tag_order资源为您提供了一个不应与其他任何资源冲突的值。因此,您将拥有一个id(或其他任何文件)文件:

res/values/ids.xml

但是,如果该值为1、2或3,则可能应该使用<?xml version="1.0" encoding="utf-8"?> <resources> <id name="tag_order" /> </resources> 而不是enum class