2014-06-10 38 views
7

我试图创建的Android XML以下简单的形状:可以在Android XML中创建这个简单的形状吗?

Simple Shape

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

在Windows Phone上,在XAML中创建此形状将不会造成问题,但Android的XML绘图功能似乎更受限制。

我试图创建一个图层列表drawable使用正常的矩形作为“身体”和旋转矩形作为三角形。只要三角形与边框对齐,通过旋转矩形创建三角形就可以正常工作。只要我尝试将三角形移动/平移到左侧(到主体/框的末端),三角形不再是三角形,当然只是一个旋转的矩形...有没有什么方法可以剪掉旋转矩形的一半,并将其移动到XML中的框的结尾?

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

我需要这种按钮的尺寸很多,使用XML drawable会比使用几十个PNG更好(从我的角度来看)。

+0

没有ü尝试与layerlist具有一个矩形和一个正方形旋转(矩形的右侧)。? –

+2

通过xml你不能做到这一点,使用图像或按钮相同,并将其设置为背景图像按钮或将src设置为imageview。 –

+2

使用拉伸区域创建九贴片图像。 – hardartcore

回答

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); 
+0

谢谢你的例子,但正如我之前说的,我正在寻找一种解决方案,只使用XML ... –

+1

正如我所说你不能这样做在XML中,为什么它必须是XML?任何原因? – pskink

+0

我刚刚在Windows Phone应用程序中工作,并在XAML中创建这些内容非常简单直接。我只是想知道在Android XML中这是否可行。当然,它可以在代码中完成,但我认为这很麻烦。 –

相关问题