2015-09-26 63 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); 

希望這有助於。