我想更改我的按钮形状但我想使用onDaw方法和EXTENDING按钮 类。所以我刚开始做的是:
<view class = "com.example.button.MainActivity$MyButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
和
public static class MyButton extends Button {
public MyButton(Context context) {
super(context);
}
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(10);
paint.setStyle(Style.FILL);
int width = getWidth();
int height = getHeight();
canvas.drawCircle(width/2, height/2, height/3, paint);
}
}
但我在按钮视图矩形上得到一个蓝色圆圈。
我想看到只是蓝色圆圈作为一个按钮形状,我得到了矩形的骑行。 任何帮助?
答案 0 :(得分:1)
在xml中将背景设置为透明(就像hypd09所述)并覆盖onTouchListener,这样只有点击蓝色圆圈时点击才有效。
setOnTouchListener控制点击位置是否在蓝色圆圈内。您可以获得this之类的触摸位置。
您甚至可以通过以下方式设置onClickListener(将其添加到MyButton类中):
@Override
public void setOnClickListener(final OnClickListener onClickListener) {
MyButton.this.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event){
if (isWithinCircle(event))
{
onClickListener.onClick(v);
}
}
});
}