XML中的竖条纹背景?

11

我想设置一个视图背景,它是由垂直条纹的常规网格组成的。这些条纹在两种颜色之间交替显示。(例如,对于一行数据,在六个像素点后是深灰色的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可绘制对象的方法来实现这个,而不使用位图资源?


1
感谢提供 BitmapShader 代码片段。我在尝试使用 XML 实现时遇到了困难,也不知道可以使用 shader 方法。 - Edward Dale
1个回答

7
很不幸,但我相当确定答案是否定的。
需要完成三个任务,其中只有两个可以在没有任何代码的情况下完成。您可以将条纹图案的基础创建为两个或多个形状项的。您还可以使用 XML可绘制对象创建重复平铺图案。关键在于所需的中间步骤:不会接受其他可绘制对象作为源值(仅图像),因此没有办法在不进行少量代码干预以创建位图(就像您所编写的一样)的情况下链接两者。
我也很想看到平铺模式应用于更多的可绘制对象,并且+1给了我完全在代码中创建图案的示例 :)

谢谢反馈。这也是我的印象。太糟糕了。:( - Ted Hopp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接