自定义圆角线性布局:添加边框

时间:2014-05-26 15:59:39

标签: android android-layout

我开发了自定义舍入LinearLayout,我想添加1px边框。

这是我的代码:

public class MyLinearLayout extends LinearLayout {

private float radius;
private Path path = new Path();
private RectF rect = new RectF();


public MyLinearLayout(Context context)
{
    super(context);
    radius = 20;
    setWillNotDraw(false);
}

@Override
protected void onDraw(Canvas canvas) {
    path.reset();
    rect.set(0, 0, canvas.getWidth(), canvas.getHeight());
    path.addRoundRect(rect, radius, radius, Direction.CCW);
    // Add 1px border RED here ?
    path.close();
    canvas.clipPath(path);
}

}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果仔细查看自定义LinearLayout中的圆角,您可能会看到半径不平滑。这是因为系统限制不支持Paths上的抗锯齿。

来自Erik Burke的一个很棒的tutorial关于如何正确创建带圆角的Views。基本上,您将创建一个屏幕外Bitmap,绘制RoundRectangle,并使用Alpha合成技术将屏幕外Bitmap与自定义LinearLayout {{1 }}' Canvas

就边框而言,您可以将Bitmap设置为Paint.Style.FILL_AND_STROKE来绘制边框。