ฉันพบปัญหานี้กับ ICS / JB เพราะปุ่มเริ่มต้นสำหรับธีม Holo ประกอบด้วยภาพที่โปร่งใสเล็กน้อย สำหรับพื้นหลังจะเห็นได้ชัดเจนเป็นพิเศษ
Gingerbread กับ 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 + และปรับแต่งหรือแยกออกสำหรับ Gingerbread / Honeycomb เนื่องจากขนาดรูปปุ่มดั้งเดิมนั้นแตกต่างจาก ICS และ JB (เช่นรูปแบบที่แน่นอนนี้ด้านหลังปุ่ม Gingerbread ทำให้มีสีขาวเล็กน้อยด้านล่างปุ่ม)