嗨我做了一个自定义的圆角按钮(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>
感谢,但对于“工厂”按钮看起来适用,它会为我custome按钮工作>? – Cardona
是的。只需使用gps_button.setBackgroundColor(getResources()。getColor(R.color.colorPrimary)); –
@Cardona所有按钮,包括您的自定义按钮,都可以访问相同的setBackgroundColor()方法 –