我想在操作栏中添加徽章计数器,并使其也可单击

    getMenuInflater().inflate(R.menu.main_menu, menu);
    MenuItem item = menu.findItem(R.id.action_notifications);
    LayerDrawable icon = (LayerDrawable) item.getIcon();
    Utils2.setBadgeCount(this, icon, 2);
    return true;


错误:

java.lang.ClassCastException: android.graphics.drawable.BitmapDrawable cannot be cast to android.graphics.drawable.LayerDrawable

最佳答案

@IntelliJ所述,这已经是answered

public Drawable geSingleDrawable(LayerDrawable layerDrawable){

      int resourceBitmapHeight = 136, resourceBitmapWidth = 153;

      float widthInInches = 0.9f;

      int widthInPixels = (int)(widthInInches * getResources().getDisplayMetrics().densityDpi);
      int heightInPixels = (int)(widthInPixels * resourceBitmapHeight / resourceBitmapWidth);

      int insetLeft = 10, insetTop = 10, insetRight = 10, insetBottom = 10;

      layerDrawable.setLayerInset(1, insetLeft, insetTop, insetRight, insetBottom);

      Bitmap bitmap = Bitmap.createBitmap(widthInPixels, heightInPixels, Bitmap.Config.ARGB_8888);

      Canvas canvas = new Canvas(bitmap);
      layerDrawable.setBounds(0, 0, widthInPixels, heightInPixels);
      layerDrawable.draw(canvas);

      BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap);
      bitmapDrawable.setBounds(0, 0, widthInPixels, heightInPixels);

      return bitmapDrawable;
}

10-06 06:11