我在LinearLayout中有一个按钮,我在这里用XML分配一个drawableLeft:
<Button android:id="@+id/button_news"
style="@style/main_button"
android:drawableLeft="@drawable/news"
android:text="@string/button_news" />
这很好用,按钮看起来像预期的。
我想以编程方式更改图片以显示可用新闻的数量。这是我的代码:
private void updateNewsButton()
{
// load the original bitmap and draw the number of news on it to show it
Paint paint = new Paint();
paint.setColor( Statics.COLOR_GENERAL_HIGHLIGHT );
paint.setTextAlign( Paint.Align.CENTER );
paint.setTextSize( 24 );
paint.setTypeface( Typeface.defaultFromStyle( Typeface.BOLD ) );
paint.setAntiAlias( true );
Bitmap bmp = BitmapFactory.decodeResource( getResources(), R.drawable.news ).copy( Config.ARGB_8888, true );
Canvas canvas = new Canvas( bmp );
int count = 5; // TODO: load from database
canvas.drawText( Integer.toString( count ), bmp.getWidth() / 2, bmp.getHeight() / 2, paint );
Drawable d = new BitmapDrawable( bmp );
_btnNews.setCompoundDrawables( d, null, null, null );
}
运行上面的代码后,我的按钮上的图像就消失了。我看不出我做错了什么,因为我之前使用过类似技术的ImageView。除了最后两行,一切都是一样的。对于ImageView,我只是直接分配位图:
...
imageView.setImageBitmap( bmp );
我需要在这里使用drawableLeft,因为还有一些其他的底部,所以我不能再使用ImageView了。
知道我的代码有什么问题吗?
答案 0 :(得分:1)
要以编程方式将图像左侧放在按钮中,请使用下面的代码
Button button = (Button) findViewById(R.id.mybutton);
button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.img, 0, 0, 0);
位置如下(左,上,右,下)