如何从自定义TextView制作按钮?

时间:2016-02-14 21:19:42

标签: android button textview android-custom-view

我试图通过扩展TextView来制作一个简单的按钮但是如果我绘制按钮的表面,它会覆盖文本以便文本隐藏。我怎么能在文字后面画出来?这是我的班级

public class DoodleButton extends TextView{

private float rx = 5f;
private float ry = 5f;
private float viewWidth, viewHeight;
private float positionX = 0, positionY = 0;
private Paint paintButton = new Paint();
private RectF area;

public DoodleButton(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(attrs, 0);

    TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.DoodleButton, 0,0);

    try{
        rx = a.getFloat(R.styleable.DoodleButton_rx, 5f);
        ry = a.getFloat(R.styleable.DoodleButton_ry, 5f);
    }finally {
        a.recycle();
    }
}

private void init(AttributeSet attrs, int defStyle){
    paintButton.setColor(Color.GRAY);
    paintButton.setAntiAlias(false);
}

@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
    super.onSizeChanged(xNew, yNew, xOld, yOld);
    viewWidth = xNew;
    viewHeight = yNew;
    area = new RectF(0,0, viewHeight, viewHeight);
}

@Override
public void onDraw(Canvas canvas){
    super.onDraw(canvas);
    canvas.drawRoundRect(area, 5, 5, paintButton);
}
}

当我绘制roundRect时,它会重叠textView中的文本,我想让按钮在文本后面绘制。

2 个答案:

答案 0 :(得分:0)

如果您想将TextView用作按钮,只需将onClickListener添加到视图中。

如果您想设计它,那么我将使用“onTouchListener”更改为背景颜色ontouch事件。

答案 1 :(得分:0)

我不会打扰TextView子类,而是直接使用Button。你可以style them的方式。

如果您需要执行Button无法执行的操作,请创建自定义视图并将所有内容绘制到Canvas中。