レイアウトの背景色を変更するには、"#FFFF0000"
のような16進数の文字列の色を使用します。 Color.HSVToColor
は勝者のように見えますが、パラメータとしてfloat[]
を取ります。
私はまったく解決策に近いですか?
Color
クラスメソッドを試してください:
public static int parseColor (String colorString)
サポートされている形式は次のとおりです。#RRGGBB #AARRGGBB '赤'、 '青'、 '緑'、 '黒'、 '白'、 'グレー'、 'シアン'、 'マゼンタ'、 'イエロー'、 'ライトグレー'、 'ダークグレー'
試してください:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
この質問は16進数の色に関連する多くの検索のために出てくるので、ここで概要を追加します。
16進数の色はRRGGBB
またはAARRGGBB
(アルファ、赤、緑、青)の形式を取ります。私の経験では、int
を直接使用するときは、完全なAARRGGBB
フォームを使用する必要があります。 RRGGBB
の形式しかない場合は、アルファ(透明度)を完全に不透明にするためにFF
を前に付けるだけです。これはコードで設定する方法です。先頭に0x
を使用すると、16進数であり、10進数ではありません。
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;
それは
int color = Color.parseColor("colorstring");
これを試して:
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
私はこれを使います、そしてそれは私が欲しいどんな色も設定するために私にとって素晴らしい働きをします。
public static final int MY_COLOR = Color.rgb(255, 102, 153);
赤、緑、青それぞれに0〜255を使用して色を設定し、その色を使用する場所にColor.BLUEまたはColor.REDまたはColorクラスが提供する他の静的色の代わりにMY_COLORを配置します。
カラーチャートをGoogleで検索するだけで、0〜255を使用して正しいRGBコードのチャートを見つけることができます。
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"/>
Xamarinでこれを使う
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
代わりに0xFFF000を使用してColor.HSVToColorメソッドに渡してください。
XMLで色を定義し、それを使用して背景色などを変更する場合は、このAPIが探しているものです。
((TextView) view).setBackgroundResource(R.drawable.your_color_here);
私のサンプルでは、TestViewに使用しました
短縮Hexコード用
int red = colorString.charAt(1) == '0' ? 0 : 255;
int blue = colorString.charAt(2) == '0' ? 0 : 255;
int green = colorString.charAt(3) == '0' ? 0 : 255;
Color.rgb(red, green,blue);