グリッド位置の数を使用してグリッドセルの色を変更したい。たとえば、5X6グリッドは30 gridItemsを意味するので、21番目の位置の色を変更したいと思います。グリッドビューをクリックせずにこれを行う方法を教えてください。
質問する
8518 次
3 に答える
1
これにはカスタム アダプタを定義する必要があります。アダプター
のメソッドでは、パラメーターが 21 と等しいかどうかを確認する必要があります。21 と等しい場合は、現在のセルの背景を変更します。getView()
position
カスタム アダプタを定義した経験がない場合は、最初に例を確認する方が理にかなっています。カスタム アダプターを
使用して画像を表示する 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
等..
その後、乗算を行うだけです
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 に答える