3

可能重复:
Android - 如何以编程方式设置按钮颜色

我在程序中动态添加了表格行并向其添加了按钮,但按钮的颜色没有改变。我添加了一个 XML 文件,用于为名为 redbtn 的按钮添加颜色,当我在活动中添加它们时它正在工作,但是当我以编程方式添加按钮样式时,颜色没有改变。我能做些什么。

redbtn.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" >

 <item android:state_pressed="true">
 <shape>
  <solid android:color="#DF0101" /> 
  <stroke android:width="1dp" android:color="#ef4444" /> 
  <corners android:radius="3dp" /> 
  <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> 
  </shape>
  </item>
 <item>
<shape>
  <gradient android:startColor="#DF0101" android:endColor="#DF0101" android:angle="270" /> 
  <stroke android:width="1dp" android:color="#992f2f" /> 
  <corners android:radius="3dp" /> 
  <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> 
  </shape>
  </item>


</selector>

在布局中:

<Button
              android:id="@+id/btn_spinner_user_search_select"
              style="?android:attr/buttonStyleSmall"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginBottom="5dp"
              android:layout_marginLeft="25dp"
              android:layout_marginTop="5dp"
              android:background="@drawable/redbtn"
              android:text="@string/btn_delete_user_search_user" />

在程序中:

TableRow addcomponentrow=new TableRow(Deleteuser.this);
            addcomponentrow.setId(200);
            addcomponentrow.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

            Button Deletecomponentbtn=new Button(Deleteuser.this);
            Deletecomponentbtn.setText("Delete");
            Deletecomponentbtn.setId(200);
            Deletecomponentbtn.setPadding(10, 0, 20, 2);
            Deletecomponentbtn.setBackgroundColor(R.drawable.redbtn);
            addcomponentrow.addView(Deletecomponentbtn);

            userdetailTable.addView(addcomponentrow,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
4

6 回答 6

1

有用..

Deletecomponentbtn.setForeground(Color.GREEN);
Deletecomponentbtn.setBackground(Color.GREEN);

如果您使用十六进制代码

 Deletecomponentbtn.setForeground(Color.parseColor("oxff00ff00"));
 Deletecomponentbtn.setBackground(Color.parseColor("oxff00ff00"));
于 2012-12-28T08:30:27.527 回答
0

如果您想尝试,那么您可以通过编程方式在和十六进制代码中提供颜色,如下所述。

Deletecomponentbtn.setBackgroundColor(Color.parseColor("HexCode"));

(vatsalshah.co.in)

于 2012-12-28T08:24:05.477 回答
0

setBackgroundColor 取颜色值 (argb, int),R.drawable.redbtn 是资源 ID (int) 它永远不会工作。

如果你想从资源中应用背景并且你有它的 ID,你应该使用 setBackgroundResource(int resid)

于 2012-12-28T08:24:55.027 回答
0

试试这个(如果你在背景中添加图片):

  Deletecomponentbtn.setBackgroundDrawable(getApplicationContext().getResources().getDrawable(R.drawable.redbtn));
于 2012-12-28T08:01:21.153 回答
0

用这个,

Deletecomponentbtn.setBackgroundResource(R.drawable.redbtn);

代替,

Deletecomponentbtn.setBackgroundColor(R.drawable.redbtn);

谢谢。

于 2012-12-28T08:33:00.937 回答
0

利用

Deletecomponentbtn.setBackgroundResource(R.drawable.redbtn);

并且可以使用不同状态的按钮更正您的 redbtn.xml。

于 2012-12-28T09:38:09.843 回答