如何设置矢量资产的颜色?

时间:2017-11-02 12:33:34

标签: java android

我只想设置矢量资源的颜色。我已经搜索过了,但似乎对我不起作用。我不想从XML中更改它,我想在我的MainActivity.java中更改它,或者我以编程方式说它。这有什么方法吗?

这是我的代码

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuItem menuItem = menu.add("Image");
    menuItem.setIcon(R.drawable.ic_camera_alt_black_24dp);
    menuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    //something like this
    //menuItem.setIconColor(Color.WHITE);
    return true;
}

我正在搜索用于格式化图标颜色的内容。

我提到我不希望使用XML执行此操作。同时android:tint对我不起作用

4 个答案:

答案 0 :(得分:2)

ivImageView.setColorFilter(getResources().getColor(R.color.colorPrimary));

答案 1 :(得分:2)

尝试以下代码

Drawable drawable = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_camera_alt_black_24dp, null);
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, Color.WHITE);
menuItem.setIcon(drawable);

答案 2 :(得分:1)

更改Vector Drawable的颜色应该是ImageViewDrawable

yourImageView.setColorFilter(ContextCompat.getColor(context, R.color.your_color_white), android.graphics.PorterDuff.Mode.SRC_IN);

这适用于矢量图像ImageView或可绘制为ImageView

答案 3 :(得分:1)

menuItem.getIcon().setColorFilter(Color.WHITE , PorterDuff.Mode.SRC_ATOP);