【问题标题】:Create Color from rgb Stringin Java在 Java 中从 rgb 字符串创建颜色
【发布时间】:2017-11-30 16:52:02
【问题描述】:

这是我将字符串转换为颜色的代码:

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) 错误:Color 类中的构造函数 Color 不能应用于给定类型; 必需:无参数 发现:浮动,浮动,浮动 原因:实际参数列表和形式参数列表的长度不同

但是,从 Android Studio 编译之前的建议是:

调用需要 API 级别 26(当前最低为 17)......

我看到 2011 年的答案支持这种创建颜色的方式,所以它肯定适用于 API 17,不需要 26。

我已尝试清理和重建项目,并将str.substring 替换为实际值,但没有任何变化。

为什么代码无法编译?

【问题讨论】:

  • 你能提供一个你正在解析的示例字符串吗?
  • 淹没,它不编译。我已将 str.substring() 替换为“FF”,它是相同的
  • 我能找到的唯一 Color.valueOf(?) 方法是 JavaFX 中的方法。如果是这样,只需使用Color.valueOf(someHexString),它应该可以正常工作

标签: java android android-api-levels


【解决方案1】:

您是否尝试过使用Color.rgb(r,g,b) 而不是Color.valueOf(...)Color.valueOf(...) 是 Android Developer O 预览版中的一个非常新的方法,因此它目前仅适用于 1 个 API 级别。

另外,请确保您使用的是 0-255 范围内的整数,或 0-1 范围内的浮点数。

【讨论】:

  • 不知道为什么但是这样我得到以下错误:错误:(20、32)错误:不兼容的类型:int无法转换为颜色。我什至没有使用任何 int...
  • Color.rgb 返回一个 int。 int 是 Color,Color 类只是一个用于操作颜色的便利类。
  • 不兼容的类型:需要 android.graphics.Color ;找到了
  • 让你的方法返回一个int,然后只返回Color.rgb(...); Color 上的所有方法都是静态的,因此您实际上并不需要 Color 类型的对象。您只需要颜色的 int 表示。
  • 所以方法基本上不能返回颜色。当我需要使用颜色时,我必须进行转换,对吧?
【解决方案2】:

您可以使用此代码。

Color.parseColor(String strColor);

这是Color类的静态方法

public static int parseColor (String colorString)

https://developer.android.com/reference/android/graphics/Color.html#parseColor(java.lang.String)

【讨论】:

  • 这是问题的最佳解决方案
猜你喜欢
  • 2018-11-15
  • 1970-01-01
  • 2014-04-25
  • 2016-10-14
  • 1970-01-01
  • 2011-08-16
  • 2012-06-22
  • 1970-01-01
  • 2012-06-13
相关资源
最近更新 更多