android - 使用 Kotlin 向 android View 添加自定义属性?
问题描述
我知道可以通过创建自己的类来使用 Kotlin 创建自定义属性,但是是否可以在View
不扩展View
类的情况下将自定义属性分配给 android?
我正在尝试创建一个order
1、2 或 3 的属性:
fun View.setOrder(order: Int){
// not sure what to put here
}
任何想法?
解决方案
我正在尝试创建一个订单属性,该属性将是 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
。
推荐阅读
- symfony4 - Symfony Snappy - 虚拟服务器上的 dosnt 工作
- microsoft-graph-api - 如何正确地将分块(大文件)附件上传到邮件中?
- database - 我可以在超类型和每个子类型之间建立一对多的关系吗?
- drools - 为什么在重新加载持久会话后,Drools 会重新评估和重新触发规则操作?
- mongodb - UnhandledPromiseRejectionWarning: MongoServerError: E11000 duplicate key error collection: (MongoDB)
- pandas - 根据两列的最大值在数据框中创建具有列名的新列
- postgresql-12 - PostgreSQL SELECT 基于 JSON 对象中的值
- pyarrow - 如何使用pyarrow记录批处理跨不同进程甚至不同主机进行通信
- agda - Agda 中数据类型的可判定相等性
- java - HTTP 400 - 带有 tomcat 10 的 Java spring-boot webapp 不工作