在 android.widget.TextView 上找不到参数类型为 android.graphics.drawable.Drawable 的属性 'android:drawable' 的 setter
Cannot find the setter for attribute 'android:drawable' with parameter type android.graphics.drawable.Drawable on android.widget.TextView
我正在制作一个绑定适配器,我可以在其中将滤色器设置为可绘制对象。
所以我在 java class
中有这些代码行
@BindingAdapter(value = {"drawable", "filterColor"}, requireAll= true)
public static void setColorFilterToDrawable(View view, int drawableInt, @ColorRes int color){
Drawable drawable = ContextCompat.getDrawable(view.getContext(),drawableInt);
drawable.setColorFilter(new
PorterDuffColorFilter(ContextCompat.getColor(view.getContext(), color), PorterDuff.Mode.SRC_IN));
view.setBackground(drawable);
}
在XML中,我是这样使用的
<TextView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/textCircle"
android:drawable="@{@drawable/background_circle}"
app:colorFilter="@{@color/primaryDark}"
android:gravity="center"
android:layout_alignParentRight="true"
android:textColor="@android:color/white"
android:textSize="14sp"
android:text="X"
android:textStyle="bold"
android:layout_marginRight="5dp"
android:onClick="@{viewModel::deletePhoto}" />
android:drawable
TextView
不存在。从您的 @BindingAdapter
来看,您期望的值设置为 app:drawable
。
此外 @drawable
和 @color
扩展为可绘制对象和颜色整数。所以你的 @BindingAdapter
应该实现以下接口。
@BindingAdapter(value = {"drawable", "filterColor"}, requireAll= true)
public static void setColorFilterToDrawable(View view, Drawable drawable, @ColorInt int color){
drawable.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN));
view.setBackground(drawable);
}
我正在制作一个绑定适配器,我可以在其中将滤色器设置为可绘制对象。
所以我在 java class
中有这些代码行@BindingAdapter(value = {"drawable", "filterColor"}, requireAll= true)
public static void setColorFilterToDrawable(View view, int drawableInt, @ColorRes int color){
Drawable drawable = ContextCompat.getDrawable(view.getContext(),drawableInt);
drawable.setColorFilter(new
PorterDuffColorFilter(ContextCompat.getColor(view.getContext(), color), PorterDuff.Mode.SRC_IN));
view.setBackground(drawable);
}
在XML中,我是这样使用的
<TextView
android:layout_width="30dp"
android:layout_height="30dp"
android:id="@+id/textCircle"
android:drawable="@{@drawable/background_circle}"
app:colorFilter="@{@color/primaryDark}"
android:gravity="center"
android:layout_alignParentRight="true"
android:textColor="@android:color/white"
android:textSize="14sp"
android:text="X"
android:textStyle="bold"
android:layout_marginRight="5dp"
android:onClick="@{viewModel::deletePhoto}" />
android:drawable
TextView
不存在。从您的 @BindingAdapter
来看,您期望的值设置为 app:drawable
。
此外 @drawable
和 @color
扩展为可绘制对象和颜色整数。所以你的 @BindingAdapter
应该实现以下接口。
@BindingAdapter(value = {"drawable", "filterColor"}, requireAll= true)
public static void setColorFilterToDrawable(View view, Drawable drawable, @ColorInt int color){
drawable.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.SRC_IN));
view.setBackground(drawable);
}