[英]Setting an ImageView resource as a Drawable
我正在嘗試在代碼中創建一個可繪制對象,並根據某些條件更改顏色。 當我嘗試將Drawable設置為ImageView的背景時,它將顯示但不會讓我設置任何填充。 我意識到我需要通過setImageDrawable()函數設置ImageView圖像,以便能夠設置填充。
我遇到的問題是,當我通過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留出空間,但沒有圖像。
謝謝,羅伯
如果實現自定義ImageView的draw方法,則只需在圖像上繪制色調。 對於一個很好的玫瑰色光澤,請嘗試:
@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 );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.