高级自定义小组件

时间:2012-09-05 19:33:55

标签: android android-widget custom-controls

我google了很多,花了很多时间试图找出如何创建自定义Android UI小部件(代码和xml)。但是有一些限制,我不知道如何绕过。因此,我嘲笑了一个虚构的按钮,想知道如何实现它。

这对我有很大的帮助,我确信我不是唯一一个在创建自定义Android小部件时遇到问题的人。

enter image description here

3 个答案:

答案 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 )。它应该允许您定义黄色三角形,红色三角形和绿色矩形。

以上布局呈现如下: snapshot

(图标和文字未通过上述布局呈现)

答案 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"/>

甚至,应该提到你可以使用第一个形状作为选择器。