我创建了一个popup menu
,在popup.xml中,我有两个图标。我试图改变popup.xml中图标的颜色,但颜色始终保持白色(原始颜色)。
有没有办法在菜单中更改可绘制的颜色?
popup.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/opt1"
android:icon="@drawable/change_pic"
android:color="@color/green"
android:title="Change Picture" />
<item
android:id="@+id/opt2"
android:icon="@drawable/change_pin"
android:title="Change Password" />
</menu>
截图
代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.add_task, menu); // for the two icons in action bar
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu:
View menuItemView = findViewById(R.id.menu);
MenuBuilder menuBuilder =new MenuBuilder(this);
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.popup, menuBuilder);
MenuPopupHelper optionsMenu = new MenuPopupHelper(this, menuBuilder, menuItemView);
optionsMenu.setForceShowIcon(true);
optionsMenu.show();
default:
return super.onOptionsItemSelected(item);
}
}
如您所见,图像实际上是白色。
答案 0 :(得分:2)
请试试这个
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu:
View menuItemView = findViewById(R.id.menu);
MenuBuilder menuBuilder =new MenuBuilder(this);
MenuInflater inflater = new MenuInflater(this);
inflater.inflate(R.menu.popup, menuBuilder);
Drawable yourdrawable1 = menuBuilder.getItem(0).getIcon(); // change 0 with 1,2 ...
Drawable yourdrawable2 = menuBuilder.getItem(1).getIcon();
yourdrawable1.mutate();
yourdrawable2.mutate();
yourdrawable1.setColorFilter(getResources().getColor(R.color.black), PorterDuff.Mode.SRC_IN);
yourdrawable2.setColorFilter(getResources().getColor(R.color.black), PorterDuff.Mode.SRC_IN);
MenuPopupHelper optionsMenu = new MenuPopupHelper(this, menuBuilder, menuItemView);
optionsMenu.setForceShowIcon(true);
optionsMenu.show();
default:
return super.onOptionsItemSelected(item);
}
}
答案 1 :(得分:1)
change_pic是图像文件或矢量资产文件??? 如果它是矢量资产,那么你可以改变.xml文件的颜色,如果你使用的是图像文件,那么我建议你使用矢量资产文件。