#android #drawable
#Android #отрисовываемый
Вопрос:
Я хочу нарисовать число на существующем 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. Что-то не так с этим кодом?
Заранее спасибо.
Ответ №1:
Новое растровое изображение должно вызывать setBounds (…)
BitmapDrawable dn = new BitmapDrawable(b);
dn.setBounds(d.getBounds());
button.setCompoundDrawables(null, dn, null, null);
Ответ №2:
Я не уверен в вашей реализации, но другой способ добиться этого — добавить ваше растровое изображение в framelayout в виде imageview, а затем добавить textview (в соответствующем стиле) со смещением; в зависимости от того, где вы хотите разместить значок, например, в верхнем правом углу.