Tôi đã gặp phải vấn đề này với ICS / JB vì các nút mặc định cho chủ đề Holo bao gồm các hình ảnh hơi trong suốt. Đối với một nền tảng này là đặc biệt đáng chú ý.
Gingerbread so với ICS +:
Sao chép trên tất cả các trạng thái và hình ảnh có thể vẽ cho mỗi độ phân giải và làm cho hình ảnh trong suốt trở nên khó khăn, vì vậy tôi đã chọn giải pháp bẩn hơn: bọc nút trong ngăn chứa có nền trắng. Đây là một bản vẽ XML thô (NútHolder) thực hiện chính xác điều đó:
Tệp XML của bạn
<?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>
NútHolder.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>
kiểu tệp
.
.
.
<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>
.
.
.
Tuy nhiên, điều này dẫn đến viền trắng vì hình ảnh nút Holo bao gồm lề để chiếm không gian được nhấn:
Vì vậy, giải pháp là tạo cho lề trắng một lề (4dp làm việc cho tôi) và các góc tròn (2dp) để ẩn hoàn toàn màu trắng nhưng vẫn làm cho nút chắc chắn:
NútHolder.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>
Kết quả cuối cùng trông như thế này:
Bạn nên nhắm mục tiêu kiểu này cho v14 + và điều chỉnh hoặc loại trừ nó cho Gingerbread / Honeycomb vì kích thước hình ảnh nút gốc của chúng khác với ICS và JB (ví dụ: kiểu chính xác này đằng sau nút Gingerbread dẫn đến một chút màu trắng bên dưới nút).