如果你想以編程的方式做,那麼你可以使用這樣一個小的類,它給你的ImageButton
一個很好的邊界。
public class BorderDrawable extends BitmapDrawable {
private static final int BORDER_WIDTH = 9;
private final int[] GRADIENT_COLORS = {Color.GRAY,Color.BLUE, Color.GREEN, Color.RED};
Paint borderPaint;
public BorderDrawable(Resources res, Bitmap bitmap) {
super(res, bitmap);
this.borderPaint = new Paint();
borderPaint.setStrokeWidth(BORDER_WIDTH);
borderPaint.setStyle(Paint.Style.STROKE);
// set border gradient
Shader shader = new LinearGradient(0, 0, 0, getBounds().bottom, GRADIENT_COLORS, null, Shader.TileMode.CLAMP);
borderPaint.setShader(shader);
// or the border color
// borderPaint.setColor(Color.GREEN);
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
// draw
canvas.drawRect(getBounds(), borderPaint);
}
}
你可以使用它這樣的東西。
Bitmap bmp = /*your bitmap*/;
BorderDrawable drawable = new BorderDrawable(getResources(), bmp);
discussionActionBtn.setImageDrawable(drawable);
希望我不是主題。我想這可以幫助你。
有posibilyties,但我完全不會推薦它,因爲這將不得不做,因爲這將不得不做 - 每次用戶點擊按鈕,即使它不是mutch工作要做,這將總結大量浪費的處理時間。在手機上,您必須節省資源,並且創建幾KB的小PNG並保存,比每次單擊某個按鈕時創建彩色圖像的效率高得多。 – Gumbo 2014-09-01 20:50:51
你可以看看這個:http://stackoverflow.com/questions/11376516/change-drawable-color-programmatically。但這種方法的問題在於,當您將ColorFilter設置爲Drawable時,所有更改將在使用drawable的所有視圖中保留。 – chjarder 2014-09-02 06:35:57
您可以使用透明圖標,只需更改按鈕的背景顏色即可。這將顯示顏色變化,但更容易和更快。 – Gravitoid 2014-09-02 22:07:48