如何动态更改按钮颜色?

时间:2015-02-27 04:12:47

标签: android android-button

在我的应用程序中,我创建了动态按钮。现在,我想在单击按钮时更改按钮背景颜色和按钮文本颜色。我为此编写了代码。我的问题是当我点击按钮时;按钮改变了背景颜色。之后我点击另一个按钮。我需要将之前的按钮更改为上一个状态(只有当前点击按钮需要更改颜色,剩下的都需要在之前的状态)任何人都可以帮助我。

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

                        }


                    }

4 个答案:

答案 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>
  1. 接下来,您必须将此选择器设置为按钮的背景,如下所示:

    android:background =“@ drawabale / selector_file_name”

  2. 就是这样。

答案 3 :(得分:0)

对于静态按钮颜色,你必须这样做,

button1.setBackgroundcolor(any color);
button1.onclickmethod(){
//change button1 color
}

button2.setonclickmethod(){
//change button1 color to starting one
}

答案输入速度很快,所以只遵循逻辑。