Holo 테마의 기본 버튼은 약간 투명한 이미지로 구성되어 있기 때문에 ICS / JB에서이 문제가 발생했습니다. 배경의 경우 특히 눈에.니다.
진저 브레드 vs. 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>
.
.
.
그러나 홀로 버튼 이미지에는 누른 공간을 설명하기 위해 여백이 포함되어 있기 때문에 흰색 테두리가 나타납니다.
따라서 해결책은 흰색 배경에 여백 (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>
최종 결과는 다음과 같습니다.
기본 버튼 이미지 크기가 ICS 및 JB와 다르기 때문에 v14 +의 경우이 스타일을 대상으로 지정하고 Gingerbread / Honeycomb의 스타일을 조정하거나 제외해야합니다 (예 : Gingerbread 버튼 뒤의 정확한 스타일은 버튼 아래에 약간의 흰색이 나타남).