Android: 按钮边框渐变

Android: gradient in border of button

我正在尝试创建这样的按钮边框样式:

所以我创建了一个 drawable.xml 并将 2 个矩形放在彼此的顶部,第二个像这样小 2dp:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape android:shape="rectangle" >
            <gradient
                android:angle="135"
                android:endColor="#6cd0f4"
                android:startColor="#acd44d"
                android:type="linear" />

            <corners android:radius="5dp" />
        </shape>
    </item>
    <item
        android:bottom="2dp"
        android:left="2dp"
        android:right="2dp"
        android:top="2dp">
        <shape android:shape="rectangle" >
            <solid android:color="#4267af" />

            <corners android:radius="3dp" />
        </shape>
    </item>
</layer-list>

这项工作很好,但我想让按钮透明,以便它采用其父视图的颜色。 任何人都知道如何创建类似的效果?九补丁drawable做这样的工作更灵活吗?

在您的哈希码开头添加#80。

android:color="#804267af"

开头的80是透明度值。 编辑:以下是透明度的值,在十六进制的开头插入两个字符以获得所需的百分比。

100% — FF

95% — F2

90% — E6

85% — D9

80% — CC

75% — BF

70% — B3

65% — A6

60% — 99

55% — 8C

50% — 80

45% — 73

40% — 66

35% — 59

30% — 4D

25% — 40

20% — 33

15% — 26

10% — 1A

5%  — 0D

0% —  00

您还可以使用以下背景属性,

android:background="@android:color/transparent" 

但是您不能在此处明确给出任何必需的百分比值。

另一种通过代码实现的方法是手动设置元素颜色的 alpha 值。

yourButton.getBackground().setAlpha(0);

希望对您有所帮助。

您可以像这样创建视图,而不是创建两个矩形视图。希望下面给出的示例对您有所帮助

<LinearLayout
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#4178AA"
    android:padding="5dp">

    <Button
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/xxxxx"
        android:background="@drawable/test" />
</LinearLayout>

测试是你的矩形 view.This 会给你与你在问题中添加的相同的形状

我最终决定使用九个补丁图像。