1

次の描画可能な XML があります。

background_view_rounded_top.xml

<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetBottom="0.0px"
    android:insetLeft="1.0px"
    android:insetRight="1.0px"
    android:insetTop="1.0px" >

    <selector>
        <item android:state_pressed="true">
            <shape>
                <gradient
                    android:angle="270.0"
                    android:endColor="@color/base_end_color_pressed"
                    android:startColor="@color/base_start_color_pressed" />

                <corners
                    android:bottomLeftRadius="0.0dip"
                    android:bottomRightRadius="0.0dip"
                    android:radius="2.0dip"
                    android:topLeftRadius="10.0dip"
                    android:topRightRadius="10.0dip" />
            </shape>
        </item>
        <item>
            <shape>
                <gradient
                    android:angle="270.0"
                    android:endColor="@color/base_end_color_default"
                    android:startColor="@color/base_start_color_default" />

                <corners
                    android:bottomLeftRadius="0.0dip"
                    android:bottomRightRadius="0.0dip"
                    android:radius="2.0dip"
                    android:topLeftRadius="11.0dip"
                    android:topRightRadius="11.0dip" />
            </shape>
        </item>
    </selector>

</inset>

startColorそのとを変更したいendColor。このドローアブルを何度も使用し、このような数十のxmlを持つことはオプションではないため、このxmlを数回コピーするだけではこれを行うことはできません。したがって、この xml を再利用して、コード内の色を変更したいと考えています。

また、background_view_rounded_bottom/middle/single と、角を丸くしないバージョンもあり、これらの xml にはすべてパラメータ化された色も必要です。

4

2 に答える 2

0

これを確認してください。追加のコードがかなりありますが、コードでドローアブルとグラデーションのドローアブルを作成する方法を示しているようです... 159行目あたりを見てください。
プログラムで作成することにより、グラデーションを動的に変更できます

于 2012-11-06T15:47:03.503 に答える
-4

私が作成したグラデーションを使用してみてください。ここでは、開始色と終了色を簡単に設定できます。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#A5A5A5"
          android:endColor="#FFFFFF"
        android:angle="90" />
    <solid android:color="#50FFFFFF" />
    <corners android:bottomRightRadius="5dp" android:bottomLeftRadius="5dp" 
     android:topLeftRadius="5dp" android:topRightRadius="5dp"/>
</shape>
于 2012-11-06T12:52:10.607 に答える