Android Binding Adapter不适用于CustomView

时间:2017-11-23 07:30:20

标签: android data-binding kotlin android-custom-view

 <com.myapp.view.widgets.TextImageTextView
            android:id="@+id/tv_on_boarding_step_one"

            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="1"
            app:layout_constraintBottom_toTopOf="@+id/appCompatButton"
            app:layout_constraintEnd_toStartOf="@+id/space_one_two"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/label_description"
            app:textAbove="Nitin" />

这是我在xml中的自定义视图

以及将textAbove绑定到此视图的方法

@BindingAdapter("app:textAbove")
fun setTextAbove(view: TextImageTextView, textAbove: Int) {
    // this is the method I have in my custom view
    view.setTextAbove(view.context.getString(textAbove))
}

但是当我编译这个时,我得到了 错误:错误:属性&#39; app:textAbove&#39;没找到。

2 个答案:

答案 0 :(得分:8)

更改

app:textAbove="Nitin"

app:textAbove='@{"Nitin"}'

另一种方式

// app:textAbove="@{@string/nitin}"  text from String resource
// app:textAbove="@{viewModel.nitin}" text from ViewModel

答案 1 :(得分:-1)

在xml:

中添加此行
 xmlns:app="http://schemas.android.com/apk/res-auto"