Установка ресурса ImageView как Drawable - PullRequest
0 голосов
/ 03 мая 2010

Я пытаюсь создать нарисованный в коде и изменить цвет на основе некоторых критериев. Когда я пытаюсь установить Drawable в качестве фона ImageView, он отображается, но не позволяет мне устанавливать какие-либо отступы. Я понял, что мне нужно установить изображение ImageView с помощью функции setImageDrawable (), чтобы иметь возможность устанавливать отступы.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я устанавливаю ее с помощью функции setImageDrawable (), ничего не отображается.

Вот что я написал:

<?xml version="1.0" encoding="utf-8"?>

            ImageView icon = (ImageView) row.findViewById(R.id.icon);
  ShapeDrawable mDrawable;

  int x = 0;
     int y = 0;
     int width = 50;
     int height = 50;

     float[] outerR = new float[] { 12, 12, 12, 12, 12, 12, 12, 12 };

     mDrawable = new ShapeDrawable(new RoundRectShape(outerR, null, null));
     mDrawable.setBounds(x, y+height, x + width, y);



  switch(position){

  case 0:
   mDrawable.getPaint().setColor(0xffff0000);  //Red
   break;
  case 1:
   mDrawable.getPaint().setColor(0xffff0000);  //Red
   break;
  case 2:
   mDrawable.getPaint().setColor(0xff00c000);  //Green
   break;
  case 3:
   mDrawable.getPaint().setColor(0xff00c000);  //Green
   break;
  case 4:
   mDrawable.getPaint().setColor(0xff0000ff);  //Blue
   break;
  case 5:
   mDrawable.getPaint().setColor(0xff0000ff);  //Blue
   break;
  case 6:
   mDrawable.getPaint().setColor(0xff696969);  //Gray
   break;
  case 7:
   mDrawable.getPaint().setColor(0xff696969);  //Gray
   break;
  case 8:
   mDrawable.getPaint().setColor(0xffffff00);  //Yellow
   break;
  case 9:
   mDrawable.getPaint().setColor(0xff8b4513);  //Brown
   break;
  case 10:
   mDrawable.getPaint().setColor(0xff8b4513);  //Brown
   break;
  case 11:
   mDrawable.getPaint().setColor(0xff8b4513);  //Brown
   break;
  case 12:
   mDrawable.getPaint().setColor(0xffa020f0);  //Purple
   break;
  case 13:
   mDrawable.getPaint().setColor(0xffff0000);  //Red
   break;
  case 14:
   mDrawable.getPaint().setColor(0xffffd700);  //Gold
   break;
  case 15:
   mDrawable.getPaint().setColor(0xffff6600);  //Orange
   break;
  }

     icon.setImageDrawable(mDrawable);
     icon.setPadding(5, 5, 5, 5);

Это приводит к пробелу для ImageView, но без изображения.

Спасибо, Rob

1 Ответ

0 голосов
/ 03 мая 2010

Если вы реализуете метод рисования пользовательского ImageView, вы можете просто нарисовать оттенок поверх изображения. Для хорошего розового блеска попробуйте:

    @Override
    protected void onDraw( Canvas canvas ) {
        super.onDraw( canvas );

        Rect                frame;
        Paint               paint = new Paint();

        paint.setStyle( Style.FILL );
        paint.setARGB( 102 , 255 , 51 , 51 );
        frame = new Rect( 0, 0, getWidth(), getHeight() );
        canvas.drawRect( frame , paint );
    }
...