可以在Android XML中创建这个简单的形状吗?

时间:2014-06-10 12:53:20

标签: android xml user-interface drawable

我正在尝试在Android XML中创建以下简单形状:

Simple Shape

只是一个矩形与三角形组合形成一个箭头。形状应该用作导航按钮背景。

在Windows Phone上,在XAML中创建此形状没有问题,但Android的XML绘图功能似乎更加有限。

我尝试使用普通矩形创建一个图层列表drawable作为" body"并将矩形旋转为三角形。只要三角形与边框对齐,通过旋转矩形创建三角形就可以正常工作。一旦我尝试向左移动/平移三角形(到主体/盒子的末尾),三角形不再是三角形,但当然只是一个旋转的矩形...有没有办法剪掉旋转矩形的一半,并将其移动到XML格式的框末尾?

当然这可以在Code / Java中完成,但我想知道它是否也可能是XML。

我需要这种具有多种不同尺寸的按钮,使用XML drawable比使用数十种PNG要好得多(从我的观点来看)。

2 个答案:

答案 0 :(得分:3)

尝试这个自定义形状:

Shape shape = new Shape() {
    Path path = new Path();
    @Override
    protected void onResize(float width, float height) {
        path.reset();
        path.lineTo(width - height / 2, 0);
        path.lineTo(width, height / 2);
        path.lineTo(width - height / 2, height);
        path.lineTo(0, height);
        path.close();
    }
    @Override
    public void draw(Canvas canvas, Paint paint) {
        canvas.drawPath(path, paint);
    }
};
ShapeDrawable d = new ShapeDrawable(shape);
d.getPaint().setColor(0xff6699bb);

someView.setBackgroundDrawable(d);

答案 1 :(得分:0)

我无法评论所以会回答..我喜欢图层列表的想法。例如:

Android custom shape

和triange示例:http://looksok.wordpress.com/2013/08/24/android-triangle-arrow-defined-as-an-xml-shape/

将这些答案结合起来可能有效。