バックエンドサーバー(iOSクライアントに転送)にカラーコードを送信する必要がありますが、ContextCompact.getColor(context, colorResourceId);
は他のクライアント(iOS)で認識できない負の値を返します。Android getColor inconsistency
これは、リソースHEX値である:
<color name="green">#1FAB06</color>
以下このコードは私の次の負の整数値を与える:-14701818
int color = ContextCompat.getColor(context, mResourceColor);
をヘクスに変換し、この負の値である:
1FAB06
この16進数値を10進数に変換すると、私は次のようになります。2075398
public int getColorDecimal(Context context) {
int color = ContextCompat.getColor(context, mResourceColor);
String hexColor = String.format("%06X", (0xFFFFFF & color));
color = Integer.parseInt(hexColor, 16);
return color;
}
この正の小数点をビューに適用すると問題が発生します。 Androidはこの値を認識しません。編集テキストは白色のままです。
mETName.setTextColor(getColorDecimal(context));
クライアントとWebサービスは、データ同期のために(何とか)同じ値を持つ必要があります。
代わりに16進数をrgb値に変換するのはなぜですか? – Pztar