मैं एक आरईएसटी एपीआई से कुछ डेटा में पढ़ रहा हूं और ऐप को प्राप्त जानकारी के आधार पर कुछ बटन जेनरेट करने की आवश्यकता है।एंड्रॉइड - प्रोग्रामेटिक रूप से बटन रंग कैसे सेट करें
क्योंकि मुझे कई गतिविधि स्क्रीनों में एक ही बटन की आवश्यकता है, मैंने राहेलबटन बनाने के लिए बटन बढ़ाया है और मैंने इसे कन्स्ट्रक्टर में स्थापित किया है।
public RachelButton(Context context, Info info) {
super(context);
this.info= info;
setText(info.getTime());
setTypeface(Typeface.DEFAULT, Typeface.BOLD);
int identifier = 0;
if(info.isAvailable()){
identifier = getContext().getResources().getIdentifier("drawable/info_button_"+info.getType(), null, getContext().getPackageName());
}else{
identifier = R.drawable.info_button_unavailable;
}
if(identifier == 0){
Log.e("INFO_BUTTON", "no button for "+info.getType());
}
setBackgroundResource(identifier);
setTextColor(R.color.info_button_text_color);
setOnClickListener(new View.OnClickListener(){
public void onClick(View view) {
//do stuff
}
});
}
फिर संसाधन मैं एक रंग का बटन उत्पन्न करने के लिए उपयोग कर रहा हूँ का एक उदाहरण यह है:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="@color/button_pressed"
android:endColor="@color/button_pressed"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/button_pressed" />
<corners
android:radius="3dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
<item android:state_focused="true" >
<shape>
<gradient
android:endColor="@color/info_normal"
android:startColor="@color/info_normal"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/info_normal" />
<corners
android:radius="3dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:endColor="@color/info_normal"
android:startColor="@color/info_normal"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@color/info_normal" />
<corners
android:radius="3dp" />
<padding
android:left="5dp"
android:top="5dp"
android:right="5dp"
android:bottom="5dp" />
</shape>
</item>
</selector>
आप कोड में देख सकते हैं मैं पाठ का रंग की स्थापना कर रहा हूँ और मुझे लगता है कि यकीन है कि यह रंग संसाधन के रूप में मौजूद है (धन्यवाद IntelliJ)।
लेकिन इस तरह के टेक्स्ट रंग को सेट करने पर कोई प्रभाव नहीं पड़ता है, बटन पर टेक्स्ट रंग बटन के पृष्ठभूमि रंग की गहरा छाया लगती है।
यदि कोई मुझे अगली कोशिश करने के लिए कुछ सलाह दे सकता है तो मैं सबसे अधिक सराहना करता हूं।
आप Android विषयों और शैलियों पर एक नज़र रखना चाहिए:
नीचे समर्थन पुस्तकालय से स्रोत कोड है। वे आपको एक ही रूप को लागू करने और विभिन्न प्रकार के एक, अधिक या सभी यूआई तत्वों को महसूस करने की अनुमति देते हैं। –
मैंने अभी इसके बारे में पढ़ना शुरू कर दिया है। – Rachel