2016-12-05 23 views
1

選択したスコークの番号が属する正方形をペイントしたいと思います。セルの領域を塗りつぶす

このコードは、印刷のために、行と列です:

   //Pintem la fila del nombre seleccionat 
      for (int i = 0; i < parent.getChildCount(); i++) { 
       TextView child = (TextView) parent.getChildAt(i); 
       if ((i/9)==x) { 
        //child.setBackgroundColor(Color.parseColor("#75FFEE")); 
        child.setBackground(getDrawable(R.drawable.contornfonsblau)); 
       } 
      } 

      //Pintem la columna del nombre seleccionat 
      for (int i = 0; i < parent.getChildCount(); i++) { 
       TextView child = (TextView) parent.getChildAt(i); 
       if ((i%9)==y) { 
        //child.setBackgroundColor(Color.parseColor("#75FFEE")); 
        child.setBackground(getDrawable(R.drawable.contornfonsblau)); 
       } 
      } 

は、私は同じことを望んでいたが、正方形のために。

EXAMPLE

答えて

0

あなたは大きな四角は3×3小正方形であるので数は、整数除算を使用して3により小さな正方形のxおよびy座標を割ることによってに属する大た正方形見つけることができます。

したがって、上記と同じ比較を行いますが、あらかじめ両辺を3で割ります。あなたはまた、xとyの両方をチェックする必要があります。もちろん

for (int i = 0; i < parent.getChildCount(); i++) { 
    TextView child = (TextView) parent.getChildAt(i); 
    if ((((i/9)/3)==(x/3)) && (((i%9)/3)==(y/3))) { 
     child.setBackground(getDrawable(R.drawable.contornfonsblau)); 
    } 
} 

を、(i/9)/3i/27に単純化することができますが、それはそれは、より読みやすいかどうかdebateableです。

forループを単一にすべての3つのテストを組み合わせることができます。

for (int i = 0; i < parent.getChildCount(); i++) { 
    TextView child = (TextView) parent.getChildAt(i); 
    if(((i/9)==x) || 
     ((i%9)==y) || 
     ((((i/9)/3)==(x/3)) && (((i%9)/3)==(y/3)))) { 
     child.setBackground(getDrawable(R.drawable.contornfonsblau)); 
    } 
} 
関連する問題