4

我想制作一个填充超过 3 种颜色的按钮,比如 7 色彩虹,从左 = 红色到右 = 紫色。

但我发现下面的代码只能满足 3 种颜色。

问题:

有没有办法生成彩虹渐变?我手上有一个 Rainbow.png,可以用吗?谢谢!!

当前代码:

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

    <item android:state_pressed="true" >         
        ...   
    </item>

    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
            <stroke android:width="0dp" android:color="@color/black" />
            <gradient
                android:startColor="@color/red"
                android:centerColor="@color/green"
                android:endColor="@color/purple"
                android:angle="0" />
            <padding android:left="5dp" android:top="2dp" 
                android:right="5dp" android:bottom="2dp" /> 
            <corners android:radius="0dp" /> 
        </shape>
    </item>

</selector>

回答:

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

    <item android:state_pressed="true" >         
        <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
            <stroke android:width="0dp" android:color="@color/black" />
            <solid android:color="@color/grey"/>
            <padding android:left="5dp" android:top="2dp" 
                android:right="5dp" android:bottom="2dp" /> 
            <corners android:radius="0dp" /> 
        </shape>    
    </item>

    <item android:drawable="@drawable/rainbow" >
        <shape xmlns:android="http://schemas.android.com/apk/res/android"> 

            <padding android:left="5dp" android:top="2dp" 
                android:right="5dp" android:bottom="2dp" /> 
            <corners android:radius="0dp" /> 
        </shape>
    </item>

</selector>
4

1 回答 1

-1

Android 内置了9-patch 系统来处理复杂的图形,这在风格上类似于一些网站背景的绘制方式。

Android 也有它自己的9-patch 创建器与 sdk 捆绑在一起,因此很容易编辑您的 png 文件,然后将 9-patch 应用到按钮。

这将允许您使用您的 png,它会根据您定义的图形的可拉伸区域调整大小,以便在按钮调整大小时调整大小

于 2013-02-11T16:04:50.377 回答