首页 > 解决方案 > 使用 Kotlin 向 android View 添加自定义属性?

问题描述

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

我正在尝试创建一个order1、2 或 3 的属性:

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

任何想法?

标签: androidkotlinandroid-view

解决方案


我正在尝试创建一个订单属性,该属性将是 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名为tag_order. 我们需要视图标签对整个应用程序是唯一的,并且各种库都使用标签,因此id资源为您提供的值不应与其他任何人的值发生冲突。因此,您将拥有一个res/values/ids.xml(或其他)文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <id name="tag_order" />
</resources>

但是,如果该值是 1、2 或 3,那么您可能应该使用 anenum class而不是 an Int


推荐阅读