gpt4 book ai didi

java - 如何以编程方式更改背景形状的颜色

转载 作者:行者123 更新时间:2023-12-01 17:57:16 25 4
gpt4 key购买 nike

我有一个自定义 View ,我必须根据输入从代码中更改背景形状的颜色。

形状:

<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size
android:width="64dp"
android:height="64dp" />
<solid
android:color="#BBBBBB" />
</shape>

自定义 View :

public class MyCustomView extends TextView {

public MyCustomView(Context context) {
super(context);
}

public MyCustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public MyCustomView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

public MyCustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}

public void setCustomValue(long customValue) {
this.setBackgroundResource(R.drawable.shape_background);
this.setTextColor(getColor(R.color.colorCustomViewText));
this.setGravity(Gravity.CENTER);
this.setText(String.valueOf(customValue));
}

public long getCustomValue() {
return Long.parseLong(this.getText().toString());
}

private int getColor(int colorId) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return getContext().getColor(colorId);
} else {
return getContext().getResources().getColor(colorId);
}
}
}

形状的颜色始终为#BBBBBB。我无法将其更改为例如red 无论我尝试哪种颜色相关属性。我必须根据输入更改颜色。

最佳答案

您可以为您的可绘制形状设置滤色器:

Drawable background = getContext().getResources().getDrawable(R.drawable.shape_background);
background.setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
this.setBackground(background);

关于java - 如何以编程方式更改背景形状的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43695758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com