XamarinでTextView Drawableの色を変更しようとしています。
Javaでは、次のように実行できます。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView txt = (TextView) findViewById(R.id.my_textview);
setTextViewDrawableColor(txt, R.color.my_color);
}
private void setTextViewDrawableColor(TextView textView, int color) {
for (Drawable drawable : textView.getCompoundDrawables()) {
if (drawable != null) {
drawable.setColorFilter(new PorterDuffColorFilter(getColor(color), PorterDuff.Mode.SRC_IN));
}
}
}
Xamarin.Androidでこのようなことをするにはどうすればよいですか?
以下の解決策を試してください
private void setTextViewDrawableColor(TextView textView, int color) {
for (Drawable drawable : textView.getCompoundDrawables()) {
if (drawable != null) {
drawable.setColorFilter(new PorterDuffColorFilter(ContextCompat.getColor(textView.getContext(), color), PorterDuff.Mode.SRC_IN));
}
}
}
私はこれをkotlinで使用しています:
tv.getCompoundDrawables()[0].setTint(//color)
私はこの行をxml定義に追加してこの問題を解決します:
Android:drawableTint = "@ color/red"
完全な例:
<TextView Android:id="@+id/tv_element" Android:layout_width="wrap_content" Android:layout_height="20dp" Android:layout_alignParentEnd="true" Android:drawableStart="@drawable/ic_icon" Android:drawableTint="@color/color" Android:visibility="visible" />