Eu encontrei esse problema com o ICS / JB porque os botões padrão do tema Holo consistem em imagens ligeiramente transparentes. Para um fundo, isso é especialmente perceptível.
Gingerbread vs. ICS +:
Copiar todos os estados e imagens que podem ser desenhados para cada resolução e tornar as imagens transparentes sólidas é uma dor, por isso optei por uma solução mais suja: enrole o botão em um suporte com fundo branco. Aqui está um drawable XML bruto (ButtonHolder) que faz exatamente isso:
Seu arquivo 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>
.
.
.
No entanto, isso resulta em uma borda branca porque as imagens do botão Holo incluem margens para contabilizar o espaço pressionado:
Portanto, a solução é dar ao fundo branco uma margem (4dp funcionou para mim) e cantos arredondados (2dp) para ocultar completamente o branco e tornar o botão sólido:
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>
O resultado final é assim:
Você deve direcionar esse estilo para a v14 + e ajustá-lo ou excluí-lo para o Gingerbread / Honeycomb porque o tamanho da imagem do botão nativo é diferente do ICS e do JB (por exemplo, esse estilo exato atrás de um botão Gingerbread resulta em um pouco de branco abaixo do botão).