我google了很多,花了很多时间试图找出如何创建自定义Android UI小部件(代码和xml)。但是有一些限制,我不知道如何绕过。因此,我嘲笑了一个虚构的按钮,想知道如何实现它。
这对我有很大的帮助,我确信我不是唯一一个在创建自定义Android小部件时遇到问题的人。
答案 0 :(得分:2)
关于多色背景,我在使用形状绘图方面取得了成功。
例如,要定义灰色实心区域,然后转换为黑色的渐变和黑色实心区域:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<corners android:radius="10px" />
<solid android:color="#FF444444"/>
</shape>
</item>
<item
android:left="45dp">
<shape android:shape="rectangle">
<gradient
android:angle="0"
android:centerX="15%"
android:startColor="#FF444444"
android:centerColor="#FF000000"
android:endColor="#FF000000"
android:type="linear"/>
</shape>
</item>
<item>
<shape android:shape="rectangle">
<corners android:radius="10px" />
<stroke
android:width="2px"
android:color="#FF444444" />
<solid android:color="#00000000"/>
</shape>
</item>
</layer-list>
这里很酷的是分层形状( items )。它应该允许您定义黄色三角形,红色三角形和绿色矩形。
以上布局呈现如下:
(图标和文字未通过上述布局呈现)
答案 1 :(得分:0)
如果您选择创建自定义小部件,我建议您从android源代码中查看最相似的标准小部件并修改它们
答案 2 :(得分:0)
为背景创建一个形状:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/GREEN"/>
<stroke
android:width="2dp"
android:color="@color/GREEN"/>
</shape>
然后使用图层列表创建一个显示图像的形状:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/GREEN"/>
</shape>
</item>
<item
android:left="15dp"
android:top="15dp"
android:right="15dp"
android:bottom="15dp"
android:drawable="@drawable/ic_image" />
</layer-list>
最后,您可以在按钮中使用上述形状:
<Button
android:id="@+id/btnFavorite"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:layout_below="@id/btnWorkout"
android:background="@drawable/selector_main_button"
android:drawableRight="@drawable/shape_favorite"
android:gravity="center"
android:text="@string/favorite"
android:textSize="@dimen/font_7"
android:textColor="@color/ORANGE"
android:textStyle="bold"
android:onClick="onClick"/>
甚至,应该提到你可以使用第一个形状作为选择器。