2010-05-02 57 views
0

我試圖在代碼中創建drawable並根據某些條件更改顏色。當我嘗試將Drawable設置爲ImageView的背景時,它將顯示但不會讓我設置任何填充。我意識到我需要通過setImageDrawable()函數設置ImageView圖像,以便能夠設置填充。將ImageView資源設置爲Drawable

我遇到的問題是,當我通過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的,但沒有圖像的空間。

感謝, 羅布

回答

0

如果您實現一個自定義的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); 
    } 
+0

我不是很熟悉這一切。我仍然可以用他們之前擁有的圓角來製作它們嗎? – tgai 2010-05-02 22:20:09

相關問題