我有三个XML文件。首先,两个是我正在应用一些渐变开始颜色,结束颜色,第三个是我正在检查按下状态(更改Bg时为true或false)。如何更改前两个XML渐变起始颜色,动态结束颜色(1.blue_rounded_bg和2.gray_rounded_bg),动态起始颜色和结束颜色反映在我的第三个文件中(按下状态检查-3,blue_btn)?
第一个XML文件:蓝色Bg(文件名:blue_rounded_bg)
<?xml version="1.0" encoding="UTF-8"?>
<corners
android:bottomLeftRadius="@dimen/size25"
android:bottomRightRadius="@dimen/size25"
android:topLeftRadius="@dimen/size25"
android:topRightRadius="@dimen/size25" />
<padding
android:bottom="@dimen/size5"
android:left="@dimen/size5"
android:right="@dimen/size5"
android:top="@dimen/size5" />
<solid android:color="@color/btn_gray" />
<gradient
android:angle="270"
android:startColor="@color/btn_blue"
android:endColor="@color/btn_light_blue"
android:type="linear" />
第二个XML文件:灰色Bg(文件名:gray_rounded_bg)
<?xml version="1.0" encoding="UTF-8"?>
<corners
android:bottomLeftRadius="@dimen/size25"
android:bottomRightRadius="@dimen/size25"
android:topLeftRadius="@dimen/size25"
android:topRightRadius="@dimen/size25" />
<padding
android:bottom="@dimen/size5"
android:left="@dimen/size5"
android:right="@dimen/size5"
android:top="@dimen/size5" />
<solid android:color="@color/btn_gray" />
第三个XML文件:我正在使用下面的代码(文件名:blue_btn)检查按下状态
<?xml version="1.0" encoding="utf-8"?>
<item android:drawable="@drawable/gray_rounded_bg" android:state_pressed="true" />
<item android:drawable="@drawable/gray_rounded_bg" android:state_enabled="false" />
<item android:drawable="@drawable/blue_rounded_bg" />
我的普通XML代码
<Button
android:id="@+id/cont_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/blue_btn"
android:padding="@dimen/size6" />
然后,如何更改可绘制渐变开始颜色,动态结束颜色以及
中反映的更改<item android:drawable="@drawable/gray_rounded_bg" android:state_pressed="true" />
这个文件呢?它可能与否?
答案 0 :(得分:2)
试试这个,使用GradientDrawable来做到这一点。
int colors[] = { 0xff255779, 0xffa6c0cd };
GradientDrawable gradientDrawable = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM, colors);
view.setBackgroundDrawable(gradientDrawable);
根据您的要求更改颜色代码。虽然我使用了Color.parseColor(&#34;颜色代码&#34;),但它不起作用。
如下所示,Orientation有一些选项。
GradientDrawable.Orientation.BOTTOM_TOP;
GradientDrawable.Orientation.LEFT_RIGHT;
GradientDrawable.Orientation.RIGHT_LEFT;