我想绘制所选数字库所属的方格。
此代码用于打印行和列:
//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));
}
}
我想和广场一样。
答案 0 :(得分:0)
你可以通过使用整数除法将小方块的x和y坐标除以3来找到一个数字所属的大方块,因为大方块是3x3小方块。
所以,做同样的比较,但事先将双方除以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)/3
可以简化为i/27
,但是否更具可读性是值得商榷的。
您可以将所有3个测试组合成一个for循环:
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));
}
}