回答:
Color
クラスメソッドを試してください:
public static int parseColor (String colorString)
サポートされている形式は次のとおりです:#RRGGBB #AARRGGBB 'red'、 'blue'、 'green'、 'black'、 'white'、 'gray'、 'cyan'、 'magenta'、 'yellow'、 'lightgray'、 'darkgray 」
#000
値を解析する方法を知っていますか?
if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }
、私が間違っている場合は修正してください
if(colorString.length() == 4 && colorString[0] == '#')
この質問は16進数の色に関連する多くの検索で出てくるので、ここに要約を追加します。
16進数の色は次の形式になります RRGGBB
またはAARRGGBB
(アルファ、赤、緑、青)。私の経験では、int
直接使用する場合は、完全なAARRGGBB
フォームを使用する必要があります。RRGGBB
フォームしかない場合は、プレフィックスを付けるだけでFF
、アルファ(透明度)を完全に不透明にします。これをコードで設定する方法を次に示します。0x
最初に使用すると、10を底とするのではなく、16進数になります。
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
他の人が指摘したように、あなたはColor.parseString
そのように使うことができます
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
文字列はで始まる必要があることに注意してください#
。RRGGBB
とAARRGGBB
形式の両方がサポートされています。
実際には、可能な限りXMLから色を取得する必要があります。これにより、アプリの色を簡単に変更できるため、このオプションをお勧めします。コード全体に16進数の色をたくさん設定すると、後でそれらを変更しようとするのは大変なことです。
Androidマテリアルデザインには、16進数値が既に構成された色味があります。
これらのテーマの色はアプリ全体で使用され、次のようになります。
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="primary">#3F51B5</color>
<color name="primary_dark">#303F9F</color>
<color name="primary_light">#C5CAE9</color>
<color name="accent">#FF4081</color>
<color name="primary_text">#212121</color>
<color name="secondary_text">#757575</color>
<color name="icons">#FFFFFF</color>
<color name="divider">#BDBDBD</color>
</resources>
追加の色が必要な場合は、xmlの2つのステップで色を定義することをお勧めします。最初に16進値の色に名前を付け、次に特定の色を取得する必要があるアプリのコンポーネントに名前を付けます。これにより、後で色を簡単に調整できます。繰り返しますが、これはcolors.xmlにあります。
<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
次に、コードで色を設定する場合は、次の操作を行います。
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);
myView.setBackgroundColor(myColor);
Colorクラスには、いくつかの事前定義された色定数が付属しています。こんな風に使えます。
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
他の色は
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT
Color.WHITE
Color.YELLOW
その文字列に変換int
して使用することができ、色setBackgroundColor
とsetTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16は、16進数であり、通常の0〜9ではないことを意味します。結果は次のようになります
int color = 0xFFFF0000;
#80000000
ますint color = 0x80000000;
。その場合、intバージョンはそうなります。それでも問題が解決しない場合は、詳細を記載した新しい質問を投稿してください。#80000000
半透明の黒色を心がけてください。
それは
int color = Color.parseColor("colorstring");
Xamarinではこれを使用します
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
res / values / colors.xmlに保存されたXMLファイル:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
次のアプリケーションコードは、カラーリソースを取得します。
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
このレイアウトXMLは、色を属性に適用します。
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
代わりに0xFFF000を使用して、それをColor.HSVToColorメソッドに渡します。