2

我搜索了很多,并花了很多时间试图弄清楚如何创建自定义 Android UI 小部件(在代码和 xml 中)。但是有一些限制我不知道如何绕过。因此,我模拟了一个虚构的按钮,并想知道如何实现它。

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

在此处输入图像描述

4

3 回答 3

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>

这里最酷的是分层形状(项目)。它应该允许您定义一个黄色三角形、一个红色三角形和一个绿色矩形。

上面的布局呈现如下: 快照

(上述布局未呈现图标和文本)

于 2012-09-05T20:59:45.603 回答
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"/>

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

于 2015-04-03T11:00:51.050 回答
0

如果您选择创建自定义小部件,我建议您从 android 源代码中查看最相似的标准小部件并修改它们

于 2012-09-05T19:41:53.843 回答