更改颜色或自定义按钮

时间:2017-06-15 17:35:22

标签: android xml

您好我制作了一个自定义圆角按钮(gps_button),但我想根据它的状态改变按钮的颜色,但颜色不会改变。颜色变量存储在Colors.xml

我的主要问题是如何将Color.xml中的颜色设置为我的自定义按钮?

这是我的代码主要活动:

public void start_gps (View view){

gps_button = (Button) (findViewById(R.id.start_gps_button));

if ((log_state == true) && (start_gps_button_state == false)){

            start_gps_button_state = true;
            gps_button.setBackgroundColor(R.color.startGpsColor);
            gps_button.setText("STOP");
            voyagePoints.setText("0");

            Toast.makeText(this, "GPS Started", Toast.LENGTH_SHORT).show();

        }else if ((log_state == true) && start_gps_button_state == true){

            start_gps_button_state = false;
            gps_button.setBackgroundColor(R.color.stopGpsColor);
            gps_button.setText("START");

            Toast.makeText(this, "GPS Stopped", Toast.LENGTH_SHORT).show();
        }
    }

这是自定义按钮:

    <?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" >
        <shape android:shape="rectangle"  >
            <corners android:radius="10dip" />
            <stroke android:width="1dip" android:color="#1EB7F1" />
            <gradient android:angle="-90" android:startColor="#1EB7F1" android:endColor="#1EB7F1"  />
        </shape>
    </item>
    <item android:state_focused="true">
        <shape android:shape="rectangle"  >
            <corners android:radius="10dip" />
            <stroke android:width="1dip" android:color="#1EB7F1" />
            <solid android:color="#1EB7F1"/>
        </shape>
    </item>
    <item >
        <shape android:shape="rectangle"  >
            <corners android:radius="10dip" />
            <stroke android:width="1dip" android:color="#1EB7F1" />
            <gradient android:angle="-90" android:startColor="#1EB7F1" android:endColor="#1EB7F1" />
        </shape>
    </item>
</selector>

这是Color.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#A7E483</color>
    <color name="colorPrimaryDark">#A7E483</color>
    <color name="colorAccent">#FF4081</color>
    <color name="stopGpsColor">#F9108E</color>
    <color name="startGpsColor">#1EB7F1</color>
</resources>

2 个答案:

答案 0 :(得分:0)

this question。您必须使用button.setBackgroundColor(getResources().getColor(R.color.colorPrimary));

答案 1 :(得分:0)

我得到了它的工作,也从这里找到它https://stackoverflow.com/a/34057311/1515105

gps_button.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(this, R.color.startGpsColor)));