Свой Drawable в android
От: dgrey  
Дата: 11.10.11 13:07
Оценка:
Есть необходимость на табе отображать счетчик дополнительно к изображению таба ( номер в кружке).
Если при инициализации TabSpec в TabHost указывать Drawable, загруженный с ресурсов, то изображение на табе отображается корректно:
  TabHost tabHost = getTabHost();
  tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("Tab1", getResources().getDrawable(R.drawable.tab1_icon)).setContent(R.id.tab1_list));


Если же использовать свой RadiusDrawable класс, то на табе ничего не отображается:
  TabHost tabHost = getTabHost();
  tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("Tab1", new RadiusDrawable()).setContent(R.id.tab1_list));


Описание RadiusDrawable, который должен рисовать круг
private class RadiusDrawable extends Drawable {

        private final Paint mPaint;
        private final RectF mRect;

        public RadiusDrawable() {
            mPaint = new Paint();
            mRect = new RectF();
        }

        @Override
        public void draw(Canvas canvas) {

            // ld.draw(canvas);
            // Set the correct values in the Paint
            mPaint.setARGB(255, 255, 0, 0);
            mPaint.setStrokeWidth(2);
            mPaint.setStyle(Style.FILL);

            // Adjust the rect
            mRect.left = 1.0f;
            mRect.top = 1.0f;
            mRect.right = 32.0f;
            mRect.bottom = 32.0f;

            // Draw it
            canvas.drawRoundRect(mRect, 0.5f, 0.5f, mPaint);
        }

        @Override
        public void setAlpha(int alpha) {
        }

        @Override
        public void setColorFilter(ColorFilter cf) {
        }

        @Override
        public int getOpacity() {
            return PixelFormat.OPAQUE;
        }
    }


Перепробовал различные варианты, в том числе и загрузку тех же ресурсов внутри RadiusDrawable, но результат один и тот-же, на табе не отображается картинка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.