我从服务器接收十六进制颜色值(在这种形式,#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?
真正的答案是使用:
Color.parseColor(myPassedColor)
在Android中,myPassedColor
是hex
值,如#000
或#000000
或#00000000
。
但是,这个功能does not support shorthand hex values如#000
。
Integer.parseInt(myString.replaceFirst("#", ""), 16)
答案是非常简单的家伙,在android中如果要将十六进制颜色转换为int,只需使用android Color类,示例如下所示
这是浅灰色
Color.parseColor("#a8a8a8");
多数民众赞成,你会得到你的结果。
我有同样的问题,我发现了#AAAAAA
形式的一些颜色,我想将其转换为Android可以使用的形式。我发现你可以使用0xFFAAAAAA
,以便android可以自动告诉颜色。注意第一个FF
告诉alpha
值。希望能帮助到你
我遇到了同样的问题。这样我就能解决它。正如CQM所说,使用Color.parseColor()是解决这个问题的一个很好的解决方案。
这是我使用的代码:
this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));
在这种情况下,当我从Preferences(color_prefs)更改颜色选择时,我的目标是更改Button的文本颜色(Button_C)。
真正的答案是最简单,最简单的......
String white = "#ffffff";
int whiteInt = Color.parseColor(white);
试试这个,在你的资源中创建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)
祝好运
根据CQM的answer和ovokerie-ogbeta的answer 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);