【问题标题】:Change Color of cell of grid更改网格单元格的颜色
【发布时间】:2012-09-07 18:12:58
【问题描述】:

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

【问题讨论】:

  • 你的 gridview 有适配器吗?
  • 那我看不出你有什么问题。到达第 21 个元素时更改颜色

标签: android gridview onclick


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      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;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-24
        • 2014-08-24
        • 2019-11-16
        相关资源
        最近更新 更多