我试图在我的 Activity 中的 onPrepareOptionsMenu 中获取一个选项菜单图标,并在 Canvas 的帮助下重绘它:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
MenuItem item = menu.findItem(R.id.menuCart);
Drawable icon = item.getIcon();
Bitmap bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(),
icon.getIntrinsicHeight(),
Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bitmap);
c.drawColor(Color.BLUE);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setAntiAlias(true);
paint.setStyle(Style.FILL_AND_STROKE);
c.drawCircle(5, 5, 50, paint);
icon.draw(c);
icon.invalidateSelf();
item.setIcon(icon);
return true;
}
不幸的是什么都没有发生。菜单中有与以前相同的图标图像。 有人可以告诉我我使用的代码有什么问题吗?
最佳答案
在这两行中:
c.drawCircle(5, 5, 50, paint);
icon.draw(c);
您首先绘制一个圆圈,然后将图标绘制到 Cavas c 中,这是从位图“位图”派生的,因此您的新图形现在位于“位图”中,应将其设置为新图标。 试试这个:
item.setIcon(new BitmapDrawable(bitmap));
关于android - 如何使用 Canvas 重绘选项菜单图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6192599/