回答:
これがあなたの答えです
colorStr=getResources().getString(R.color.someColor);
あなたが得るでしょう
colorStr = "#123456"
//noinspection ResourceTypeステートメントのすぐ上に追加できます。
getResources().getString(0+R.color.someColor);作品
簡単なコピーパスタのために:
"#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color));
または、透明度なしでそれをしたい場合:
"#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color) & 0x00ffffff);
'#' + Integer.toHexString(getResources().getColor(R.color.someColor);、後で使用するため、これを使用して変更する必要がありましたColor.parseColor
Integer.toHexString()16進文字列に先行ゼロがある場合、ここでのすべてのソリューションは、ブレークを使用します。のような色#0affffはになり#affffます。代わりにこれを使用してください:
String.format("#%06x", ContextCompat.getColor(this, R.color.your_color) & 0xffffff)
またはアルファ付き:
String.format("#%08x", ContextCompat.getColor(this, R.color.your_color) & 0xffffffff)
原因getResources().getColorapi> 23が必要です。これはより良い方法です。コピーと貼り付けを簡単にするためです。
Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) );
または、透明度なしでそれをしたい場合: `
Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) & 0x00ffffff );
ContextCompat.getColor3つの引数を取らない
エラーが発生した場合は、@ SuppressLint( "ResourceType")を追加します。怒鳴るように。
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>";
}
ContextCompator を使用したくない場合はSuppressLint、のstringすぐ下にリソースを追加してくださいcolor。
の代わりに
<color name="text_color">#FFFFFF</color>
使用する
<color name="text_color">#FFFFFF</color>
<string name="text_color_string">#FFFFFF</string>
あなたのコードはより繰り返しになりますが、それははるかにきれいです。さらに、string変更後の更新を忘れることcolorは、それらが互いに隣接しているためほとんど不可能です。