在我的应用程序中,我创建了动态按钮。现在,我想在单击按钮时更改按钮背景颜色和按钮文本颜色。我为此编写了代码。我的问题是当我点击按钮时;按钮改变了背景颜色。之后我点击另一个按钮。我需要将之前的按钮更改为上一个状态(只有当前点击按钮需要更改颜色,剩下的都需要在之前的状态)任何人都可以帮助我。
mycode的:
try {
JSONArray arr=new JSONArray(result);
for (int i = 0; i < arr.length(); i++) {
final JSONObject jsonobj = arr.getJSONObject(i);
if (!plantype.contains(jsonobj.getString("RCType"))) {
plantype.add(jsonobj.getString("RCType"));///butoon creation
// Log.e("TAG_BUTTONSSSSSS",""+plantype);
btn = new Button(getActivity());
btn.setTag(jsonobj.getString("PlanType"));
btn.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
btn.setText(jsonobj.getString("PlanType"));
btn.setTextColor(Color.WHITE);
btn.setBackgroundResource(R.drawable.rechargebtn);
btns_layout.addView(btn);
btn.setTextColor(Color.WHITE);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String plan = ((Button) v).getText().toString();
int index = plantype.indexOf(plan);
// Log.v("TAG_INDEX",""+plan);
Plans(index);
Log.v("TAG_TAG", "" + ((Button) v).getTag());
Log.v("TAG_TAG", "" + ((Button) v).getText());
if (((Button) v).getTag().equals(((Button) v).getText())) {
((Button) v).setBackgroundColor(Color.WHITE);
((Button) v).setTextColor(Color.RED);
} else{
try {
if (!((Button) v).getTag().equals(jsonobj.getString("PlanType"))) {
((Button) v).setBackgroundColor(Color.BLUE);
((Button) v).setTextColor(Color.WHITE);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
});
}
}
答案 0 :(得分:0)
确保在color.xml中定义颜色
color = ((ColorDrawable)button.getBackground()).getColor();
if( R.color.white==color)
{
button.setBackgroundColor(R.color.blue);
}else
{
button.setBackgroundColor(R.color.whit);
}
答案 1 :(得分:0)
selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true" android:drawable="@color/red"></item>
<item android:state_pressed="true" android:drawable="@color/blue"></item>
<item android:drawable="@color/white"></item>
</selector>
然后在您的活动中使用
btn.setBackgroundResource(R.drawable.selector);
答案 2 :(得分:0)
1。将此选择器xml设置为可绘制文件夹:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"><shape>
<solid android:color="#D4A017" />
<stroke android:width="1dp" android:color="#D4A017" />
</shape></item>
<item><shape>
<gradient android:angle="270" android:endColor="#ef5829" android:startColor="#ef5829" />
<stroke android:width="1dp" android:color="#ef5829" />
</shape></item>
</selector>
接下来,您必须将此选择器设置为按钮的背景,如下所示:
android:background =“@ drawabale / selector_file_name”
就是这样。
答案 3 :(得分:0)
对于静态按钮颜色,你必须这样做,
button1.setBackgroundcolor(any color);
button1.onclickmethod(){
//change button1 color
}
button2.setonclickmethod(){
//change button1 color to starting one
}
答案输入速度很快,所以只遵循逻辑。