Saya mengalami masalah dengan ICS / JB ini karena tombol default untuk tema Holo terdiri dari gambar yang sedikit transparan. Untuk latar belakang, ini terutama terlihat.
Roti jahe vs ICS +:
Menyalin semua status dan gambar yang dapat digambar untuk setiap resolusi dan membuat gambar transparan menjadi padat, jadi saya memilih solusi yang lebih kotor: bungkus tombol di dudukan yang memiliki latar belakang putih. Inilah drawable XML mentah (ButtonHolder) yang melakukan hal itu:
File XML Anda
<?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>
.
.
.
Namun, ini menghasilkan batas putih karena gambar tombol Holo menyertakan margin untuk memperhitungkan ruang yang ditekan:
Jadi solusinya adalah memberikan latar belakang putih margin (4dp bekerja untuk saya) dan sudut bulat (2dp) untuk benar-benar menyembunyikan putih namun membuat tombol solid:
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>
Hasil akhirnya terlihat seperti ini:
Anda harus menargetkan gaya ini untuk v14 +, dan men-tweak atau mengecualikannya untuk Gingerbread / Honeycomb karena ukuran gambar tombol asli mereka berbeda dari ICS dan JB's (misalnya gaya yang tepat di belakang tombol Gingerbread ini menghasilkan sedikit putih di bawah tombol).