在Java中从rgb字符串创建颜色
这是我将字符串转换为颜色的代码:在Java中从rgb字符串创建颜色,java,android,android-api-levels,Java,Android,Android Api Levels,这是我将字符串转换为颜色的代码: public Color prepareColour(String str) { str.replace("#", ""); float r = Float.valueOf(str.substring(0,1)); float g = Float.valueOf(str.substring(2,3)); float b = Float.valueOf(str.substring(4,5)); Color color = C
public Color prepareColour(String str) {
str.replace("#", "");
float r = Float.valueOf(str.substring(0,1));
float g = Float.valueOf(str.substring(2,3));
float b = Float.valueOf(str.substring(4,5));
Color color = Color.valueOf(r,g,b);
return color;
}
我收到以下调试错误:
错误:(16,23)错误:类颜色中的构造函数颜色不能应用于给定类型;
必需:无参数
找到:浮动,浮动,浮动
原因:实际参数列表和正式参数列表长度不同
但是,在从Android Studio编译之前,建议:
调用需要API级别26(当前最小值为17)
我看到2011年的答案支持这种创建颜色的方法,所以它肯定可以在API 17上工作,不需要26
我尝试过清理和重建项目,以及用实际值替换str.substring
,但没有任何更改
为什么代码不能编译?您是否尝试过使用
Color.rgb(r,g,b)
而不是Color.valueOf(…)
Color.valueOf(…)
是Android Developer O预览版中的一个非常新的方法,因此目前它只在1个API级别上有用
另外,请确保您使用的整数在0-255范围内,或浮点在0-1范围内。您可以使用此代码
Color.parseColor(String strColor);
这是Color
类的静态方法
public static int parseColor (String colorString)
您能提供一个正在解析的示例字符串吗?被淹没后,它不会编译。我已经用“FF”替换了str.substring(),这是相同的。我能找到的唯一
Color.valueOf(?)
方法是JavaFX中的方法。如果是,只需使用Color.valueOf(somehextstring)
就可以了fine@TomK不知道为什么,但这样我得到了以下错误:错误:(20,32)错误:不兼容的类型:int无法转换为颜色。我甚至没有使用任何int…Color.rgb返回一个int。int是一种颜色,Color类只是一个操作颜色的方便类。不兼容类型:必需的android.graphics.Color;找到int使您的方法返回int,并只返回Color.rgb(…);所有关于颜色的方法都是静态的,所以实际上不需要颜色类型的对象。你只需要颜色的int表示,所以方法基本上不能返回颜色。当我需要使用颜色时,我必须进行转换,对吗?这是这个问题的最佳解决方案