mi función de extensión para TextView:
fun TextView.setColorifiedText(text : String) { // Some logic to change color of text setText(text) }mi archivo xml con enlace de datos:
<layout> <data> <!--some data--> </data> <LinearLayout> <TextView android:setColorifiedText="some text to be colorified" /> </LinearLayout> </layout>Sí, es posible acceder a una función de extensión escrita para una vista en XML.
Tenemos el prefijo del nombre de la función de extensión con 'set' y lo anotamos con la anotación 'BindingAdapter', por ejemplo: si el nombre de su función de extensión es 'colorText', cámbielo a 'setColorText' y acceda al mismo en XML con el nombre del atributo 'colorText' del espacio de nombres 'app:'. Además, anote la función de extensión con @BindingAdapter("colorText")
@BindingAdapter("colorText") fun TextView.setColorText(text : String) { // logic to something with the text }en xml:
<TextView app:colorText="your String" />también puede modificar el código usando el setter getter de kotlin para aprovechar
En el caso de Java, declare la función como estática y agregue un argumento al método que obtenga una referencia a la vista de texto a la que le dio el atributo.