有两个纯色的矩形形状

我想用两个纯色(水平)创build一个矩形形状来实现这样的效果:

在这里输入图像说明

我听说过layer-list ,我虽然可以使用它包含两个不同颜色的矩形,但它似乎只是垂直放置形状。

有没有办法使用lalyer-list来实现这个目标,还是应该使用完全不同的东西? 我想保持简单,能够在运行时更改形状颜色。

谢谢。

Solutions Collecting From Web of "有两个纯色的矩形形状"

您可以为此创build自定义绘图。 只要扩展Drawable类。

这是一个示例代码,绘制一个矩形像你想要的,你可以提供任何数量的颜色。

 public class ColorBarDrawable extends Drawable { private int[] themeColors; public ColorBarDrawable(int[] themeColors) { this.themeColors = themeColors; } @Override public void draw(Canvas canvas) { // get drawable dimensions Rect bounds = getBounds(); int width = bounds.right - bounds.left; int height = bounds.bottom - bounds.top; // draw background gradient Paint backgroundPaint = new Paint(); int barWidth = width / themeColors.length; int barWidthRemainder = width % themeColors.length; for (int i = 0; i < themeColors.length; i++) { backgroundPaint.setColor(themeColors[i]); canvas.drawRect(i * barWidth, 0, (i + 1) * barWidth, height, backgroundPaint); } // draw remainder, if exists if (barWidthRemainder > 0) { canvas.drawRect(themeColors.length * barWidth, 0, themeColors.length * barWidth + barWidthRemainder, height, backgroundPaint); } } @Override public void setAlpha(int alpha) { } @Override public void setColorFilter(ColorFilter cf) { } @Override public int getOpacity() { return PixelFormat.OPAQUE; } } 

这肯定会按照您的要求绘制形状

根据需要调整<item>大小!

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:left="50dip"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#0000FF" /> </shape> </item> <item android:right="50dip"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#ff0000" /> </shape> </item> </layer-list> 

这会给你两种颜色的一半和一半垂直。 把这个代码放在一个drawable资源中。

 <item android:top="320dip"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="@color/red" /> </shape> </item> <item android:bottom="320dip"> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="@color/yellow" /> </shape> </item>