以编程方式更改android按钮可绘制图标颜色

我想以编程方式从我的按钮更改我的图标颜色…

在我的xml上,我有

            android:drawableTint="@color/colorPrimary"
            android:drawabletop="@drawable/ic_car_black_24dp"

设置图标并设置图标颜色…但我想从我的java端更改图标颜色…

有人能帮我吗?

        <android.support.v7.widget.AppCompatButton
            android:id="@+id/bt_search_vehicle_car"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/eight_density_pixel"
            android:layout_weight="1"
            android:background="@drawable/background_rounded_blue_border"
            android:drawableTint="@color/colorPrimary"
            android:drawabletop="@drawable/ic_car_black_24dp"
            android:padding="@dimen/eight_density_pixel"
            android:text="Carros"
            android:textAllCaps="false"
            android:textColor="@color/colorPrimary" />

解决方法:

首先,除非您编写自定义视图并且想要扩展它,否则不要直接使用AppCompatButton.系统将正常按钮“解析”为AppCompatButton,因此您不需要后者.

至于你原来的问题,有多种方法可以绘制一个drawable.您可以使用DrawableCompact以“着色”方式进行操作,同时可以使用普通的ColorFilter以“过滤”方式执行此操作.

用DrawableCompat着色

使用DrawableCompat到wrap drawable,以便它可以在较旧的平台上使用tinted.

Button yourButton = findViewById(R.id.bt_search_vehicle_car);

Drawable drawable = getResources().getDrawable(R.drawable.ic_car_black_24dp);
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, getResources().getColor(R.color.colorPrimary));

yourButton.setCompoundDrawables(null, drawable, null, null);

使用ColorFilter

使用Drawable.setColorFilter(...)方法为drawable设置重叠的滤色器.

Button yourButton = findViewById(R.id.bt_search_vehicle_car);

Drawable drawable = getResources().getDrawable(R.drawable.ic_car_black_24dp).mutate();
drawable.setColorFilter(getResources().getColor(R.color.colorPrimary), PorterDuff.Mode.SRC_ATOP);

yourButton.setCompoundDrawables(null, drawable, null, null);

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...