【问题标题】:How can changes Change drawable gradient start color and end color dynamically with "android:state_pressed" in android activity如何在android活动中使用“android:state_pressed”动态更改可绘制渐变开始颜色和结束颜色
【发布时间】:2016-10-07 18:41:30
【问题描述】:

我有三个 XML 文件。首先,第二个是我正在应用一些渐变开始颜色,结束颜色,第三个是我正在检查按下状态(更改 Bg 的真或假)。如何动态更改我的前两个 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" />

这个文件也是?有没有可能?

【问题讨论】:

    标签: android gradient android-xml


    【解决方案1】:

    试试这个,使用 GradientDrawable 来做这个。

    int colors[] = { 0xff255779, 0xffa6c0cd };
    
    GradientDrawable gradientDrawable = new GradientDrawable(
            GradientDrawable.Orientation.TOP_BOTTOM, colors);
    
    view.setBackgroundDrawable(gradientDrawable);
    

    根据您的要求更改颜色代码。虽然我使用了 Color.parseColor("color code"),但它不起作用。

    有一些方向选项,如下所示。

    GradientDrawable.Orientation.BOTTOM_TOP;
    GradientDrawable.Orientation.LEFT_RIGHT;
    GradientDrawable.Orientation.RIGHT_LEFT;
    

    【讨论】:

    • 我正在使用自定义形状
    • 你能参考我的示例图片吗?我在问如何动态更改开始颜色和结束颜色。
    • 您是从上面的链接复制的吗?请仔细阅读我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多