2017-06-15 229 views
0

嗨我做了一个自定义的圆角按钮(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> 

回答

0

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

+0

感谢,但对于“工厂”按钮看起来适用,它会为我custome按钮工作>? – Cardona

+1

是的。只需使用gps_button.setBackgroundColor(getResources()。getColor(R.color.colorPrimary)); –

+0

@Cardona所有按钮,包括您的自定义按钮,都可以访问相同的setBackgroundColor()方法 –