Ich bin auf dieses Problem mit ICS / JB gestoßen, weil die Standardschaltflächen für das Holo-Thema aus Bildern bestehen, die leicht transparent sind. Für den Hintergrund fällt dies besonders auf.
Lebkuchen vs. ICS +:
Das Kopieren aller zeichnbaren Zustände und Bilder für jede Auflösung und das Festhalten der transparenten Bilder ist mühsam. Daher habe ich mich für eine schmutzigere Lösung entschieden: Wickeln Sie den Knopf in eine Halterung mit weißem Hintergrund. Hier ist ein grobes XML-Zeichenobjekt (ButtonHolder), das genau das tut:
Ihre XML-Datei
<?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>
.
.
.
Dies führt jedoch zu einem weißen Rand, da die Bilder der Holo-Schaltfläche Ränder enthalten, um den gedrückten Raum zu berücksichtigen:
Die Lösung besteht also darin, dem weißen Hintergrund einen Rand (4 dp hat bei mir funktioniert) und abgerundete Ecken (2 dp) zu geben, um das Weiß vollständig auszublenden und die Schaltfläche dennoch solide zu machen:
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>
Das Endergebnis sieht folgendermaßen aus:
Sie sollten diesen Stil für Version 14 + verwenden und ihn für Lebkuchen / Waben optimieren oder ausschließen, da sich die nativen Bildgrößen der Schaltflächen von denen von ICS und JB unterscheiden (z. B. führt dieser genaue Stil hinter einer Lebkuchenschaltfläche zu einem kleinen Weißanteil unter der Schaltfläche).