自定义LinearLayout

时间:2015-03-13 06:00:33

标签: android widget android-linearlayout

我想制作如下布局:

enter image description here

为此我需要三个这样的背景:

This is one layout

this is another layout

this is another

我需要结合所有这些和

在运行时我必须改变每个

的背景颜色

所以我想做自定义linearlayout。

但我不知道如何做到这一点。

我已经检查了制作三角形和平行四边形布局的一些示例,但我想合并所有三个视图。请提供一些有用的链接,并提供代码示例,而不是提供参考。

先谢谢你。 :)

我试过相对布局。对于remoteview,我试过这个:

ColorFilter cf = new PorterDuffColorFilter(-15032095, Mode.MULTIPLY);
        Drawable d= context.getResources().getDrawable(R.drawable.panel1);
        d.mutate();
        d.setColorFilter(cf);

我尝试了以下代码:

rv.setInt(R.id.rl_noti_main, "setColorFilter", d);
rv.setInt(R.id.rl_noti_main, "setBackgroundDrawable", -15032095);
rv.setInt(R.id.rl_noti_main, "setBackgroundResources",d);

2 个答案:

答案 0 :(得分:1)

尝试框架布局或相对布局。您需要重叠每个视图以实现无法在线性布局中完成的操作。将每个图像设为具有透明区域的矩形,该部分需要重叠。

答案 1 :(得分:0)

选项1

考虑制作自定义视图。您将扩展View类并覆盖onDraw方法。在onDraw方法中,您将绘制特殊形状。您还可以创建一种方法来设置每个部件的颜色。首先阅读documentation。它给出了一个非常全面的概述。然后查找有关绘制和创建自定义视图的一些教程。跟着你,你应该准备好自己尝试一下。

这里有几个教程,但我相信你可以找到更多。

选项2

将您的三种形状创建为白色图像(或者可能为9-patch图像,具体取决于您需要为不同的布局调整大小的方式)。你不想要的颜色部分你可以透明。我甚至可以将中间图像作为高大的矩形(或者甚至是简单的矩形视图)并将其他两个图像分层放在顶部。)然后使用RelativeLayout将图像堆叠或重叠在一起。之后使用Drawable.setColorFilter以编程方式更改颜色。请参阅以下链接。对于很多人来说,这似乎是成功的。