2015-09-26 29 views
1

我这是怎么创造出大小的按钮的5×5格:编程设置按钮的背景颜色去除保证金和圆角

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); 
     } 

enter image description here

当我设置背景颜色比别的东西默认情况下,这是发生了什么:

btn.setBackgroundColor(Color.RED); 

enter image description here

回答

5

而不是使用

btn.setBackgroundColor(Color.RED); 

使用

btn.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFAA0000)); 

您可以根据您的需要colour.If你想知道的颜色常量值使用不同的值,你可以参考the documents

此外,您可以使用PorterDuff乘法模式以编程方式设置整个按钮的阴影。这将改变按钮的颜色,而不仅仅是色调。

例如,对于一个红色的阴影按钮

btn.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY); 

对于绿色阴影按钮

btn.getBackground().setColorFilter(0xFF00FF00, PorterDuff.Mode.MULTIPLY); 

希望这有助于。