改变网格单元格的颜色

时间:2012-09-07 09:47:33

标签: android gridview onclick

我想使用网格位置的数量来更改网格单元格的颜色。例如我有5X6网格意味着30个gridItems所以我想改变21位置的颜色。请告诉我如何在不点击网格视图的情况下执行此操作。

3 个答案:

答案 0 :(得分:1)

为了在膨胀网格单元的布局时设置网格单元格中的颜色,在baseadapter类中创建一个单元格的数组,然后根据需要设置颜色。

喜欢

LayoutInflater li = (LayoutInflater) mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        grd = li.inflate(R.layout.grid_item, null);
FrameLayout dgcl = (FrameLayout) grd.findViewById(R.id.grditm);
        parent_l[position] = dgcl;

然后

parent_l[21].setBackgroundColor(Color.RED);

这里griditm是布局grid_item的id

答案 1 :(得分:1)

您需要为此定义自定义适配器 在适配器的getView()方法中,如果等于21,则必须检查position参数。如果它等于21,则更改当前单元格的背景。

如果您还没有定义自定义适配器的经验,那么首先通过示例会更有意义。
以下是使用custom adapter to display images.

的GridView示例

答案 2 :(得分:-1)

首先,您必须确定网格的顺序,列在哪里以及哪里是线。例如:

1 2 3 4 5

6 7 8 9 10

等。

然后只做一个乘法

i = Y*numberOfColums  + X;
grid[i].myColor = Color(R,G,B);

我假设基于0的索引,这只是意味着: 如果有6列:

0 <= X <= 5

如果有5行

0 <= Y <=4

0基于索引允许您以非常简单的方式迭代整个网格

for(int x = 0; x < numberOfColumns; x++)
{
    for(int y = 0; y < numberOfRows; y++)
    {
        i = Y*numberOfColums  + X;
    }
}