Я хочу создать стиль кнопки на Android с двумя цветами фона, например следующее изображение:
http://i.stack.imgur.com/ExKXl.png
Можно ли сделать с доступными ресурсами? Я ищу решение на http://developer.android.com/guide/topics/resources/drawable-resource.html, но ни один из них не может иметь два цвета.
Есть ли способ?
[редактирование ответа]
Решение состояло в том, чтобы создать <layer-list>
с элементами, и каждый <item>
имеет один <shape>
. Код ниже (вся кнопка имеет высоту 32 dp, поэтому я использовал половину высоты для каждого цвета):
<?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>
Но у меня была другая проблема, я пытался поставить углы на каждой фигуре. Я попытался поставить android:topLeftRadius
и android:topRightRadius
на первую фигуру и android:bottomLeftRadius
и android:bottomRightRadius
на вторую фигуру, но это не показало мне углы! Таким образом, решение состояло в том, чтобы использовать android:radius
(все 8 углов стали закругленными, черт возьми!) и добавить еще два элемента, чтобы обойти лишние углы. В конце XML выглядит следующим образом:
<?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>
Теперь все работает, всем спасибо!