我搜索了很多,并花了很多时间试图弄清楚如何创建自定义 Android UI 小部件(在代码和 xml 中)。但是有一些限制我不知道如何绕过。因此,我模拟了一个虚构的按钮,并想知道如何实现它。
这对我有很大帮助,而且我确信我不是唯一一个在创建自定义 Android 小部件时遇到问题的人。
我搜索了很多,并花了很多时间试图弄清楚如何创建自定义 Android UI 小部件(在代码和 xml 中)。但是有一些限制我不知道如何绕过。因此,我模拟了一个虚构的按钮,并想知道如何实现它。
这对我有很大帮助,而且我确信我不是唯一一个在创建自定义 Android 小部件时遇到问题的人。
关于多色背景,我成功地使用了形状可绘制对象。
例如,要定义一个灰色实心区域,然后是一个渐变到黑色的渐变,以及一个黑色实心区域:
<?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>
这里最酷的是分层形状(项目)。它应该允许您定义一个黄色三角形、一个红色三角形和一个绿色矩形。
上面的布局呈现如下:
(上述布局未呈现图标和文本)
为背景创建一个形状:
<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"/>
甚至,应该提到您可以使用第一个形状作为选择器。
如果您选择创建自定义小部件,我建议您从 android 源代码中查看最相似的标准小部件并修改它们