我只想设置矢量资源的颜色。我已经搜索过了,但似乎对我不起作用。我不想从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
对我不起作用
答案 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的颜色应该是ImageView
或Drawable
:
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);