web-dev-qa-db-ja.com

TextViewドローアブルの色の設定

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でこのようなことをするにはどうすればよいですか?

12
CDrosos

以下の解決策を試してください

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));
            }
        }
    }
12
Arthur Attout

私はこれをkotlinで使用しています:

tv.getCompoundDrawables()[0].setTint(//color)
0

私はこの行を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" />
0
pilladooo