96

我正在从服务器接收十六进制颜色值(以这种形式#xxxxxx,例如#000000黑色)

如何将其转换为整数值?

我试图Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))得到一个更加六边形的0x000000结果,但这并没有被解释为int这里,还有其他建议吗?

我收到一个错误:08-03 21:06:24.673: ERROR/AndroidRuntime(20231): java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer

我正在使用 Android SDK 来实现它们的setBackgroundColor(int color)功能,正如您可能已经猜到的那样,它需要一个整数颜色值。

这是这个问题的对立面:How to convert a color integer to a hex String in Android?

4

10 回答 10

201

真正的答案是使用:

Color.parseColor(myPassedColor)在 Android 中,myPassedColorhex类似#000or #000000or的值#00000000

但是,此函数不支持速记十六进制值,例如#000.

于 2013-01-26T02:48:27.483 回答
38

答案很简单,在android中如果你想将十六进制颜色转换为int,只需使用android Color类,示例如下所示

这是浅灰色的

Color.parseColor("#a8a8a8");

就是这样,你会得到你的结果。

于 2017-06-16T06:22:25.817 回答
16
Integer.parseInt(myString.replaceFirst("#", ""), 16) 
于 2011-08-04T01:07:27.070 回答
7

我有同样的问题,我发现了一些颜色的形式,#AAAAAA我想把它转换成 android 可以使用的形式。我发现你可以使用0xFFAAAAAA这样 android 可以自动分辨颜色。注意第一个FF是告诉alpha价值。希望能帮助到你

于 2012-07-26T01:01:57.530 回答
5

真正的答案是这个最简单最容易的......

String white = "#ffffff";
int whiteInt = Color.parseColor(white);
于 2016-12-14T05:56:40.737 回答
3

我面临着同样的问题。这样我就能够解决它。正如 CQM 所说,使用 Color.parseColor() 是解决此问题的好方法。

这是我使用的代码:

this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));

在这种情况下,我的目标是在我从我的首选项 (color_prefs) 更改颜色选择时更改按钮的文本颜色 (Button_C)。

于 2014-04-17T14:12:20.307 回答
2

基于CQM回答ovokerie-ogbeta对另一个问题的回答,我想出了这个解决方案:

if (colorAsString.length() == 4) { // #XXX
    colorAsString = colorAsString.replaceAll("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])", "#$1$1$2$2$3$3");
}

int color = Color.parseColor(colorAsString);
于 2019-02-28T13:22:01.103 回答
1

在字符串中获取共享首选项颜色代码,然后转换为整数并添加布局背景颜色:

    sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE);
    String sw=sharedPreferences.getString(name, "");
    relativeLayout.setBackgroundColor(Color.parseColor(sw));
于 2019-12-03T17:39:03.783 回答
1

如果您可以将值作为静态 const 传递,则可以使用此在线转换器将十六进制值转换为 Android (android.graphics.Color),并将颜色参考放入 const,即:颜色转换器为我提供此颜色的值#EE5670 = 0xFFEE5670。

static const Color redColor = const Color(0xFFEE5670);

https://convertingcolors.com/hex-color-EE5670.html?search=#EE5670

于 2021-05-10T18:27:21.963 回答
0

试试这个,在你的资源中创建drawable ...

<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/white"/>
    <size android:height="20dp"
        android:width="20dp"/>
</shape>

然后使用...

 Drawable mDrawable = getActivity().getResources().getDrawable(R.drawable.bg_rectangle_multicolor);
mDrawable.setColorFilter(Color.parseColor(color), PorterDuff.Mode.SRC_IN);
mView1.setBackground(mDrawable);

带颜色...“#FFFFFF”

如果颜色是透明的,请使用... setAlpha

mView1.setAlpha(x);与 x 浮动 0-1 Ej (0.9f)

祝你好运

于 2017-01-27T21:48:50.610 回答