将十六进制颜色值(#ffffff)转换为整数值

问题描述 投票:72回答:8

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

如何将其转换为整数值?

我尝试做Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))得到一个更加hextastic 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?

java android colors numberformatexception
8个回答
164
投票

真正的答案是使用:

Color.parseColor(myPassedColor)在Android中,myPassedColorhex值,如#000#000000#00000000

但是,这个功能does not support shorthand hex values#000


13
投票
Integer.parseInt(myString.replaceFirst("#", ""), 16) 

12
投票

答案是非常简单的家伙,在android中如果要将十六进制颜色转换为int,只需使用android Color类,示例如下所示

这是浅灰色

Color.parseColor("#a8a8a8");

多数民众赞成,你会得到你的结果。


6
投票

我有同样的问题,我发现了#AAAAAA形式的一些颜色,我想将其转换为Android可以使用的形式。我发现你可以使用0xFFAAAAAA,以便android可以自动告诉颜色。注意第一个FF告诉alpha值。希望能帮助到你


2
投票

我遇到了同样的问题。这样我就能解决它。正如CQM所说,使用Color.parseColor()是解决这个问题的一个很好的解决方案。

这是我使用的代码:

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

在这种情况下,当我从Preferences(color_prefs)更改颜色选择时,我的目标是更改Button的文本颜色(Button_C)。


2
投票

真正的答案是最简单,最简单的......

String white = "#ffffff";
int whiteInt = Color.parseColor(white);

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 float 0-1 Ej(0.9f)

祝好运


0
投票

根据CQManswerovokerie-ogbetaanswer to another question,我提出了这个解决方案:

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);
© www.soinside.com 2019 - 2024. All rights reserved.