बुरी ख़बरें
जैसे BoD कहता है, लॉलीपॉप 5.0 (एपीआई स्तर 21) में एक बटन की पृष्ठभूमि को टिंट करना अर्थहीन है।
अच्छी खबर
लॉलीपॉप 5.1 (एपीआई स्तर 22) btn_mtrl_default_shape.xml (अन्य फ़ाइलों के बीच) में परिवर्तन करके इसे ठीक कर दिया गया लगता है: https://android.googlesource.com/platform/frameworks-base/+/6dfa60f33ca6018959ebff1efde82db7d2d2d2d2d2d
बड़ी खुशखबरी
नए समर्थन पुस्तकालय (संस्करण 22.1+) पार्श्व-संगत tinting समर्थन जोड़ता सहित घटकों, की बहुत सारी करने के लिए AppCompatButton !
दुर्भाग्य से, android:backgroundTint
संपत्ति अभी भी काम नहीं करती है (शायद मैं कुछ गलत कर रहा हूं) - इसलिए आपको ColorStateList
कोड का उपयोग करना होगा setSupportBackgroundTintList()
। android:backgroundTint
भविष्य में समर्थित देखना वास्तव में अच्छा होगा। अद्यतन : Marcio Granzotto ने टिप्पणी की कि AppCompatButton app:backgroundTint
पर काम करता है! ध्यान दें कि यह एप्लिकेशन / लाइब्रेरी में app:
नहीं है android:
, क्योंकि यह नहीं है ।
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<AppCompatButton
android:id="@+id/mybutton"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="Testing, testing"
app:backgroundTint="#ff00ff"/>
</LinearLayout>
यदि आप इसे से विरासत में देते हैं, तो आपकी गतिविधि AppCompatButton
सामान्य के बजाय स्वचालित रूप से बढ़ जाएगी ।Button
AppCompatActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AppCompatButton v = (AppCompatButton) findViewById(R.id.mybutton);
ColorStateList csl = new ColorStateList(new int[][]{new int[0]}, new int[]{0xffffcc00});
v.setSupportBackgroundTintList(csl);
}
}
आप निश्चित रूप ColorStateList
से एक रंग संसाधन से प्राप्त करना चाहिए , लेकिन मैं आलसी था, इसलिए ...
ओह, और Theme.AppCompat
विषयों में से किसी एक पर अपने ऐप थीम को आधार बनाना न भूलें , या फिर कॉम्पिटिशन व्यू बहुत, बहुत दुखद होगा;);
इसने 2.3.7 (जिंजरब्रेड MR1) और 5.0 (लॉलीपॉप 'क्लासिक') दोनों पर काम किया।