是否可以使用XML布局访问为具有Databinding的TextView编写的扩展功能?

时间:2019-01-20 16:20:32

标签: android kotlin android-databinding kotlin-android-extensions

我的TextView扩展功能:

fun TextView.setColorifiedText(text : String) {
 // Some logic to change color of text
 setText(text)
}

我的具有数据绑定的xml文件:

<layout>
   <data>
      <!--some data-->
   </data>
   <LinearLayout>
      <TextView 
        android:setColorifiedText="some text to be colorified"
      />
   </LinearLayout>
</layout>

1 个答案:

答案 0 :(得分:1)

是的,可以访问为XML视图编写的扩展功能。

我们在扩展功能名称前加上“ set”前缀,并在“ BindingAdapter”注释中对其进行注释,例如: 如果您的扩展功能名称为'colorText',请将其更改为'setColorText',然后从属性'app:'命名空间中使用属性名称为'colorText'的XML进行访问。 另外,使用@BindingAdapter(“ colorText”)

注释扩展功能。
@BindingAdapter("colorText")
fun TextView.setColorText(text : String) {
   // logic to something with the text
}

在XML中:

<TextView
   app:colorText="your String" />

您还可以使用kotlin的setter getter来修改代码

如果是Java,则将该函数声明为静态函数,然后在该方法中添加一个参数,以获取对该属性赋予的textview的引用。