我知道可以通过创建自己的类来使用Kotlin创建自定义属性,但是是否可以在不扩展View
类的情况下向Android View
分配自定义属性?
我正在尝试创建一个order
属性,该属性将为1、2或3:
fun View.setOrder(order: Int){
// not sure what to put here
}
有什么主意吗?
答案 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
。