这是我创建一个偶数大小的5x5网格按钮的方法:
buttons_in_row = 5;
LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout_tags);
layout.setOrientation(LinearLayout.VERTICAL);
for (int i = 0; i < buttons_in_row; i++) {
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
for (int j = 0; j < buttons_in_row; j++) {
Button btn = new Button(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);
btn.setLayoutParams(params);
btn.setText("B " + (j + 1 + (i * buttons_in_row)));
btn.setId(j + 1 + (i * buttons_in_row));
btn.setWidth(width / buttons_in_row);
btn.setHeight(width / buttons_in_row);
btn.setOnClickListener(this);
row.addView(btn);
}
layout.addView(row);
}
当我将背景颜色设置为默认值以外的其他颜色时,会发生以下情况:
btn.setBackgroundColor(Color.RED);
答案 0 :(得分:5)
而不是使用
btn.setBackgroundColor(Color.RED);
使用
btn.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFAA0000));
您可以根据所需的颜色使用不同的值。如果您想知道颜色的常量值,可以参考the documents。
此外,您可以使用PorterDuff乘法模式以编程方式设置整个按钮的阴影。这将改变按钮颜色而不仅仅是色调。
例如,红色阴影按钮
btn.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
绿色阴影按钮
btn.getBackground().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY);
希望这有帮助。