如何以编程方式将表格布局中的背景颜色设置为按钮?

时间:2017-04-03 08:01:33

标签: android android-layout android-tablelayout

我正在制作Tic Tac Toe游戏。我使用了tic tac toe board的按钮并动态设置表格布局。 问题是,我无法设置按钮的背景属性。 我的代码在这里。

TableLayout table = (TableLayout) findViewById(R.id.tableLayout1);
    table.removeAllViewsInLayout();

    int id = 0;

    for (int f = 0; f < board_size; f++) {
        TableRow tr = new TableRow(this);
        for (int c = 0; c < board_size; c++) {
            Button b = new Button(this);
            b.setId(id);
            b.setTextSize(15.0f);

       //below code assign color to whole table background
            //b.setBackground(Color.WHITE); 
            b.setOnClickListener(this);
            id++;
            tr.addView(b, screenWidth / board_size, screenWidth / board_size);
        }
        table.addView(tr);
    }

请指导我。提前致谢。

4 个答案:

答案 0 :(得分:2)

R.color.red是一个ID(也是一个int),但不是一种颜色。

请改用以下其中一项:

// If you're in an activity:
Button.setBackgroundColor(getResources().getColor(R.color.red));
// OR, if you're not: 
Button.setBackgroundColor(Button.getContext().getResources().getColor(R.color.red));

或者,或者:

Button.setBackgroundColor(Color.RED); // From android.graphics.Color

或者,更多专业技能:

Button.setBackgroundColor(0xFFFF0000); // 0xAARRGGBB

答案 1 :(得分:1)

您没有将LayoutParams提供给新创建的Button。加上这个:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT);
b.setLayoutParams(params);

答案 2 :(得分:0)

请致电:

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( 
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(5, 5, 5, 5);
b.setLayoutParams(params);
b.setBackgroundColor(Color.GREEN); // From android.graphics.Color

答案 3 :(得分:0)

尝试b.setBackgroundColor(Color.Green);

设置按钮宽度

b.setLayoutParams(new LinearLayout.LayoutParams(10,100));