मैंने आईसीएस / जेबी के साथ इस समस्या में भाग लिया है क्योंकि होलो थीम के लिए डिफ़ॉल्ट बटन में ऐसी छवियां होती हैं जो थोड़ी पारदर्शी होती हैं। एक पृष्ठभूमि के लिए यह विशेष रूप से ध्यान देने योग्य है।
जिंजरब्रेड बनाम आईसीएस +:
प्रत्येक रिज़ॉल्यूशन के लिए सभी ड्रॉएबल स्टेट्स और इमेज को कॉपी करना और ट्रांसपेरेंट इमेज को सॉलिड बनाना एक दर्द है, इसलिए मैंने एक डर्टियर सॉल्यूशन का विकल्प चुना है: बटन को उस होल्डर में लपेटें जिसमें वाइट बैकग्राउंड हो। यहाँ एक कच्चा XML ड्रॉबल (ButtonHolder) है जो ठीक यही करता है:
आपकी XML फ़ाइल
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/Content">
<RelativeLayout style="@style/ButtonHolder">
<Button android:id="@+id/myButton"
style="@style/Button"
android:text="@string/proceed"/>
</RelativeLayout>
</LinearLayout>
ButtonHolder.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/white"/>
</shape>
</item>
</layer-list>
styles.xml
.
.
.
<style name="ButtonHolder">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:background">@drawable/buttonholder</item>
</style>
<style name="Button" parent="@android:style/Widget.Button">
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:textStyle">bold</item>
</style>
.
.
.
हालाँकि, इसका परिणाम सफ़ेद बॉर्डर के रूप में दिखाई देता है क्योंकि होलो बटन छवियों में प्रेस किए गए स्थान के लिए हाशिये शामिल हैं:
इसलिए सफ़ेद पृष्ठभूमि को एक मार्जिन देने के लिए समाधान (4dp ने मेरे लिए काम किया) और गोल कोनों (2dp) को पूरी तरह से सफेद करने के लिए अभी तक बटन को ठोस बनाया है:
ButtonHolder.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
</shape>
</item>
<item android:top="4dp" android:bottom="4dp" android:left="4dp" android:right="4dp">
<shape android:shape="rectangle">
<solid android:color="@color/white"/>
<corners android:radius="2dp" />
</shape>
</item>
</layer-list>
अंतिम परिणाम इस तरह दिखता है:
आपको इस शैली को v14 + के लिए लक्षित करना चाहिए, और जिंजरब्रेड / हनीकॉम्ब के लिए इसे ट्वीक या बाहर करना चाहिए क्योंकि उनकी मूल बटन छवि का आकार आईसीएस और जेबी से भिन्न होता है (जैसे जिंजरब्रेड बटन के पीछे यह सटीक शैली बटन के नीचे एक छोटे से सफेद रंग में परिणाम होती है)।