Можно ли получить доступ к функции расширения, написанной для TextView с привязкой данных в макете XML? - PullRequest
0 голосов
/ 20 января 2019

моя функция расширения для 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 голосов
/ 01 февраля 2019

Да, можно получить доступ к функции расширения, написанной для представления в XML.

Мы поставили перед именем функции расширения префикс «set» и аннотировали его аннотацией «BindingAdapter». Например:- если имя вашей функции расширения - «colorText», измените его на «setColorText» и получите доступ к нему в XML с именем атрибута «colorText» из пространства имен «app:».Кроме того, аннотируйте функцию расширения с помощью @BindingAdapter ("colorText")

@BindingAdapter("colorText")
fun TextView.setColorText(text : String) {
   // logic to something with the text
}

в XML:

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

, вы также можете изменить код, используя установщик-установщик kotlin для получения преимущества

В случае Java объявите функцию как статическую и добавьте аргумент к методу, который получает ссылку на текстовое представление, которому вы дали атрибут.

...