1

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

4

3 回答 3

1

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

如果您还没有定义自定义适配器的经验,那么首先通过一个示例会更有意义。
下面是一个使用自定义适配器来显示图像的 GridView 示例。

于 2012-09-07T10:12:58.507 回答
0

为了在扩展网格单元布局的同时在网格单元中设置颜色,请在您的 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

于 2012-09-07T10:01:03.023 回答
-2

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

1 2 3 4 5

6 7 8 9 10

ETC..

然后做一个乘法

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;
    }
}
于 2012-09-07T09:50:13.790 回答