Я зіткнувся з цією проблемою з ICS / JB, оскільки кнопки за замовчуванням для теми Holo складаються з зображень, які є злегка прозорими. Для фону це особливо помітно.
Пряники проти ICS +:
Копіювання всіх зображуваних станів та зображень для кожної роздільної здатності та створення прозорих зображень суцільним - це біль, тому я вибрав більш брудне рішення: загорніть кнопку в тримач, який має білий фон. Ось такий сирий 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>
.
.
.
Однак це призводить до білої рамки, оскільки зображення кнопок Holo містять поля для врахування натиснутого простору:
Таким чином, рішення полягає в тому, щоб надати білому тлі поля (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 + і налаштувати або виключити його для пряників / соти, тому що їх розміри нативного зображення кнопки відрізняються від ICS та JB (наприклад, цей точний стиль за кнопкою Пряники приводить до білого бітка під кнопкою).