画上Drawable

时间:2011-06-07 11:31:58

标签: android drawable

我想在现有的drawable上绘制一个数字。就像电子邮件图标上的未读数一样。 drawable是按钮的顶部图标。这是我的代码:

BitmapDrawable d = (BitmapDrawable) button.getCompoundDrawables()[1];
if(d != null) {
    Bitmap src = d.getBitmap();
    Bitmap b = Bitmap.createBitmap(src.getWidth(), src.getHeight(), src.getConfig());
    Canvas c = new Canvas(b);

    Paint p = new Paint();
    p.setAntiAlias(true);
    p.setStrokeWidth(1);
    p.setStyle(Style.FILL_AND_STROKE);
    p.setColor(Color.rgb(254, 0, 1));

    c.drawBitmap(src, 0, 0, p);
    c.drawCircle(b.getWidth()-5, 5, 5, p);
    button.setCompoundDrawables(null, new BitmapDrawable(b), null, null);
}

得到的drawable是emtpy。这段代码有问题吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

新位图必须调用setBounds(...)

BitmapDrawable dn = new BitmapDrawable(b);
dn.setBounds(d.getBounds());
button.setCompoundDrawables(null, dn, null, null);

答案 1 :(得分:0)

我不确定您的实现,但另一种方法是将您的位图作为imageview添加到framelayout,然后添加带有偏移量的textview(适当样式);取决于您想要徽章的位置,例如右上角。