我的问题是我有一个具有可绘制背景的按钮,它的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的标记,但不更改其形状。我无法将一个文件转换为一个值,此处不适合使用硬编码))。我该如何解决这个问题?
答案 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)