根据某些值平滑更改按钮的可绘制背景色

时间:2018-06-27 04:45:40

标签: android

我的问题是我有一个具有可绘制背景的按钮,它的xml代码如下

<Button
android:id="@+id/prolongate"
style="@style/styleBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dp"
android:layout_marginEnd="32dp"
android:layout_marginStart="32dp"/>

在这里,根据样式,此按钮的背景是具有以下代码的可绘制文件

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#ff3add79" />
    <corners android:radius="128dp" />
</shape>

现在,我想根据值动态更改此按钮的背景颜色,该值是NumberPicker的标记,但不更改其形状。我无法将一个文件转换为一个值,此处不适合使用硬编码))。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

使用ColorFilter可以动态更改Drawables的颜色。

Drawable buttonBackground = button.getBackground();
    buttonBackground = buttonBackground.mutate();
    buttonBackground.setColorFilter(Color.parseColor("#ff0000"), Mode.SRC_IN);
    button.setBackground(buttonBackground);

https://developer.android.com/reference/android/graphics/ColorFilter 也检查一下模式 https://developer.android.com/reference/android/graphics/PorterDuff.Mode

答案 1 :(得分:0)

  

您还可以使用渐变Drawable并提供值运行时。

EQYcurves <- ggplot(RLCxmelt, aes(x=PAR, y=VAL, fill=TMP)) + #data
  geom_point(size=0, shape=21, stroke=0) + #markers size & shape & marker border
  geom_smooth(size=0.5, aes(PAR, VAL), method='nls',  +
              formula = ((a/b) * exp( -(t-c)/b - exp(-(t-c)/b) )),
              method.args = list(start=c(t=PAR, a=1000, b=50, c=75)),
              se=FALSE)