Android XML中的垂直条带背景?

Android XML中的垂直条带背景?,android,background,drawable,xml-drawable,Android,Background,Drawable,Xml Drawable,我想设置一个视图背景,它是垂直条纹的规则网格。条纹在两种颜色之间交替。(例如,在一行中,可能有6个像素的浅灰色,然后是2个像素的深灰色,重复以填充宽度。) 使用位图(作为资源或在代码中生成)很容易做到这一点。例如: ShapeDrawable bg = new ShapeDrawable(new RectShape()); int[] pixels = new int[] { 0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCC

我想设置一个视图背景,它是垂直条纹的规则网格。条纹在两种颜色之间交替。(例如,在一行中,可能有6个像素的浅灰色,然后是2个像素的深灰色,重复以填充宽度。)

使用位图(作为资源或在代码中生成)很容易做到这一点。例如:

ShapeDrawable bg = new ShapeDrawable(new RectShape());
int[] pixels = new int[] { 0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC,
    0xFFCCCCCC, 0xFFCCCCCC, 0xFFCCCCCC, 0xFF999999, 0xFF999999};
Bitmap bm = Bitmap.createBitmap(pixels, 8, 1, Bitmap.Config.ARGB_8888);
Shader shader = new BitmapShader(bm,
    Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
bg.getPaint().setShader(shader);
view.setBackgroundDrawable(bg);

有没有一种方法可以在不使用位图资源的情况下,严格按照XML可绘制文件来完成这项工作?

不幸的是,我很确定答案是否定的

在所需的三项任务中,只有两项可以在没有任何代码的情况下完成。您可以将条纹图案的底部创建为两个或多个
项目的
。您还可以使用
XML可绘制文件创建重复的平铺图案。技巧是中间步骤:
将不接受另一个可绘制值作为源值(仅图像),因此,如果不使用少量代码创建位图(如您所编写的),就无法链接这两个值


我希望看到瓷砖模式也能应用到更多的绘图中,并且+1为我提供了一个完全用代码创建图案的示例:)

感谢您的反馈。这也是我的印象。太糟糕了(感谢
BitmapShader
代码片段。我在XML中很难做到这一点,但不知道着色器的方法。