Android get color as string value
If i defined a color in resources
<resources>
<color name="someColor">#123456</color>
</resources>
it's possible to set color by its id, like
view.setTex开发者_如何学GotColor(R.color.someColor);
Is it also possible to get color string value from colors.xml?
Something like
colorStr = getColor(R.color.someColor);
// -> colorStr = "#123456"
If yes, can anybody give an example?
Thank you
This is your answer
colorStr=getResources().getString(R.color.someColor);
you will get
colorStr = "#123456"
Just for the sake of easy copypasta:
"#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color));
Or if you want it without the transparency:
"#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color) & 0x00ffffff);
All of the solutions here using Integer.toHexString()
break if you would have leading zeroes in your hex string. Colors like #0affff
would result in #affff
. Use this instead:
String.format("#%06x", ContextCompat.getColor(this, R.color.your_color) & 0xffffff)
or with alpha:
String.format("#%08x", ContextCompat.getColor(this, R.color.your_color) & 0xffffffff)
The answers provided above are not updated.
Please try this one
String colorHex = "#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.dark_sky_blue) & 0x00ffffff);
Cause getResources().getColor
need api > 23. So this is better:
Just for the sake of easy copy & paste:
Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) );
Or if you want it without the transparency:`
Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) & 0x00ffffff );
For API above 21 you can use
getString(R.color.color_name);
This will return the color in a string format. To convert that to a color in integer format (sometimes only integers are accepted) then:
Color.parseColor(getString(R.color.color_name));
The above expression returns the integer equivalent of the color defined in color.xml file
It works for me!
String.format("#%06x", ContextCompat.getColor(this, R.color.my_color) & 0xffffff)
Add @SuppressLint("ResourceType") if an error occurs. Like bellow.
private String formatUsernameAction(UserInfo userInfo, String action) {
String username = userInfo.getUsername();
@SuppressLint("ResourceType") String usernameColor = getContext().getResources().getString(R.color.background_button);
return "<font color=\""+usernameColor+"\">" + username
+ "</font> <font color=\"#787f83\">" + action.toLowerCase() + "</font>";
}
I don't think there is standard functionality for that. You can however turn the return in value from getColor()
to hex and turn the hex value to string.
hex 123456 = int 1193046;
This is how I've done it:
String color = "#" + Integer.toHexString(ContextCompat.getColor
(getApplicationContext(), R.color.yourColor) & 0x00ffffff);
精彩评论