在按钮上绘制画布

时间:2011-07-20 06:48:52

标签: android button

我有像这样的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#dde1ec"
    >
    <Button
        android:layout_width="wrap_content"
        android:id="@+id/button_manage_expenses"
         android:layout_height="wrap_content"

         android:background="@drawable/ic_manage_expenses"
    ></Button>
  </LinearLayout>
和代码

Button buttonManageExpenses = (Button)this.findViewById(R.id.button_manage_expenses);           
        Canvas canvas = new Canvas();
        Paint paint = new Paint(); 
        paint.setColor(Color.WHITE); 
        paint.setStyle(Style.FILL); 
        canvas.drawPaint(paint); 

        paint.setColor(Color.BLACK); 
        paint.setTextSize(20); 
        canvas.drawText("Some Text", 10, 25, paint); 
        buttonManageExpenses.draw(canvas);


我想在按钮上画一个画布,我正在以正确的方式做什么?请纠正我

3 个答案:

答案 0 :(得分:2)

您可以将画布转换为drawable并将按钮的背景设置为drawable:

Button b;
Bitmap bitmap = Bitmap.createBitmap(int width, int height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
// Do stuff in canvas here
Drawable drawable = new BitmapDrawable(bitmap);
b.setBackgroundDrawable(drawable);

答案 1 :(得分:0)

我不确定这是否是您正在寻找的。但您可以设置按钮以显示图标。如果您是在XML中进行操作,请添加行android:drawableLeft="@drawable/circle_icon(将“左”字替换为您想要图像所在的任何一侧。您可以选择“顶部”,“底部”,“左侧” , “对”)。如果要在代码中设置按钮的图像,请使用此行button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.circle_icon, 0, 0, 0);。祝你好运!

答案 2 :(得分:0)

你也可以尝试创建一个复合小部件,它有一个Button和一个Imageview,在xml中正确定位它们,然后你就可以更好地控制一切。你也可以按自己的方式去做,但这将是很多代码。

比如说,设计一个扩展LinearLayout的CustomButton,向它添加一个Button和ImageView,当然在某种意义上重叠。现在,您可以从CustomButton类中公开直接与按钮和imageview交互的方法。