Tôi muốn làm một kiểu nút trên Android với hai màu nền, chẳng hạn như hình ảnh sau:Android: nút với hai màu nền
http://i.stack.imgur.com/ExKXl.png
Có thể thực hiện với nguồn tài nguyên drawable? Tôi đang tìm kiếm giải pháp trên http://developer.android.com/guide/topics/resources/drawable-resource.html nhưng không ai trong số họ có thể có hai màu.
Có cách nào không?
[chỉnh sửa câu trả lời]
Giải pháp là để tạo ra một <layer-list>
với các mặt hàng và từng <item>
có một <shape>
. Mã dưới đây (toàn bộ nút có chiều cao 32dp nên tôi đã sử dụng một nửa chiều cao cho mỗi màu):
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Top color -->
<item android:bottom="16dp">
<shape android:shape="rectangle">
<solid android:color="#FF0000" /> <!-- RED -->
</shape>
</item>
<!-- Bottom color -->
<item android:top="16dp">
<shape android:shape="rectangle">
<solid android:color="#00FF00" /> <!-- GREEN -->
</shape>
</item>
</layer-list>
Nhưng tôi có một vấn đề khác, tôi đã cố gắng đặt góc trên mỗi hình dạng. Tôi đã cố gắng đặt android:topLeftRadius
và android:topRightRadius
vào hình dạng đầu tiên và android:bottomLeftRadius
và android:bottomRightRadius
ở hình dạng thứ hai nhưng nó không hiển thị cho tôi các góc! Vì vậy, giải pháp là sử dụng android:radius
(tất cả 8 góc đã được làm tròn, chết tiệt!) Và đặt thêm hai vật phẩm khác để vượt qua các góc phụ. Vào cuối XML có dạng như sau:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Top color with corner -->
<item android:bottom="16dp">
<shape android:shape="rectangle">
<corners android:radius="5dp" /> <!-- It´s obligatory, It didn´t work only with android:topLeftRadius and android:topRightRadius -->
<solid android:color="#FF0000" /> <!-- RED Color-->
</shape>
</item>
<!-- Takes off the center corner -->
<item android:top="8dp" android:bottom="8dp">
<shape android:shape="rectangle">
<solid android:color="#FF0000" /> <!-- RED Color-->
</shape>
</item>
<!-- Bottom color with corner -->
<item android:top="16dp">
<shape android:shape="rectangle">
<corners android:radius="5dp" /> <!-- It´s obligatory, It didn´t work only with android:bottomLeftRadius and android:bottomRightRadius -->
<solid android:color="#00FF00" /> <!-- GREEN Color -->
</shape>
</item>
<!-- Takes off the center corner -->
<item android:top="16dp" android:bottom="8dp">
<shape android:shape="rectangle">
<solid android:color="#00FF00" /> <!-- GREEN Color -->
</shape>
</item>
</layer-list>
Bây giờ nó đang hoạt động, cảm ơn tất cả!
thể trùng lặp của [? Dải nền với hai màu sắc] (http://stackoverflow.com/questions/8727238/banded-background-with-two-colors) –