我最近开始为Android制作象棋游戏。我需要的第一件事就是制作8乘8的电路板。我想添加64个按钮并在XML中组织它们效率不高,所以我找到了一种使用简单的8x8按钮矩阵以编程方式创建它们的方法。在此之前,一切都按预期工作,我有这个:
我接下来尝试的是改变按钮的颜色以匹配棋盘。在互联网上,我找到了一些方法,但几乎所有这些都只是让我的按钮看不见,并没有改变它们的颜色。
这是onCreate方法(到目前为止我唯一修改过的方法):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_menu);
//GETTING SCREEN DIMENSIONS
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
//SETTING THE BOARD
int TILESIZE = width/8;
LinearLayout back = (LinearLayout) findViewById(R.id.back);
LinearLayout[] rows = new LinearLayout[8];
Button[][] tiles = new Button[8][8];
for(int i = 0; i < 8; i++){
rows[i] = new LinearLayout(this);
back.addView(rows[i]);
for(int j = 0; j < 8; j++){
tiles[i][j] = new Button(this);
tiles[i][j].setWidth(TILESIZE);
tiles[i][j].setHeight(tiles[i][j].getWidth());
if((i + j) % 2 == 0){
tiles[i][j].setBackgroundColor(0xFFFFFFFF);
tiles[i][j].invalidate();
}
else{
//TODO: Make tiles black
}
rows[i].addView(tiles[i][j]);
}
}
}
XML文件包含一个名为back的垂直线性布局。
我的问题是如何让按钮改变颜色,我在哪里做错了什么。我也很乐意接受替代(或更好)的方法来制作董事会。
答案 0 :(得分:0)
像这样改变你的循环并尝试
for(int i = 0; i < 8; i++){
rows[i] = new LinearLayout(this);
for(int j = 0; j < 8; j++){
tiles[i][j] = new Button(this);
tiles[i][j].setWidth(TILESIZE);
tiles[i][j].setHeight(tiles[i][j].getWidth());
if((i + j) % 2 == 0){
tiles[i][j].setBackgroundColor(0xFFFFFFFF);
tiles[i][j].invalidate();
}
else{
//TODO: Make tiles black
}
rows[i].addView(tiles[i][j]);
}
back.addView(rows[i]);
}
答案 1 :(得分:0)
像这样更改if
循环:
if((i + j) % 2 == 0)
tiles[i][j].setBackgroundColor(android.R.color.holo_blue_dark);
else
tiles[i][j].setBackgroundColor(android.R.color.holo_red_dark);
您可以在black
文件中定义white
和color.xml
颜色,然后使用tiles[i][j].setBackgroundColor(getResources().getColor(R.color.white));
添加颜色,类似地添加黑色。
但请确保您使用不同的背景,以便清晰可见。