Jak uzyskać kolor z szesnastkowego ciągu kolorów
Chciałbym użyć koloru z ciągu hexa, takiego jak "#FFFF0000"
, aby (powiedzmy) zmienić kolor tła układu.
Color.HSVToColor
wygląda na zwycięzcę, ale jako parametr przyjmuje float[]
.
12 answers
Try Color
class method:
public static int parseColor (String colorString)
Obsługiwane formaty to: #rrggbb # aarrggbb 'red', 'blue', 'green',' black',' white',' gray',' cyan',' magenta',' yellow',' lightgray','darkgray'
AndroidX: String.toColorInt()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-30 19:55:18
Try:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-15 13:26:36
To pytanie pojawia się dla wielu wyszukiwań związanych z hex color, więc dodam podsumowanie tutaj.
Kolor z int
Kolory szesnastkowe przyjmują postać RRGGBB
lub AARRGGBB
(alfa, czerwony, zielony, niebieski). Z mojego doświadczenia wynika, że używając int
bezpośrednio, musisz użyć pełnego AARRGGBB
formularza. Jeśli masz tylko formę RRGGBB
, po prostu przedrostek FF
, aby Alfa (przezroczystość) była całkowicie nieprzezroczysta. Oto, jak ustawić go w kodzie. Użycie 0x
na początku oznacza, że jest szesnastkowo, a nie w bazie 10.
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
Color from String
Jak zauważyli inni, możesz używać Color.parseColor
w ten sposób
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
Zauważ, że łańcuch musi zaczynać się od #
. Obsługiwane są zarówno formaty RRGGBB
, jak i AARRGGBB
.
Color from XML
Powinieneś w miarę możliwości pobierać kolory z XML. Jest to zalecana opcja, ponieważ znacznie ułatwia wprowadzanie zmian kolorów w aplikacji. Jeśli ustawisz wiele kolorów szesnastkowych w kodzie wtedy jest wielkim bólem próbować je później zmienić.
Android material design ma podniebienia kolorów z wartościami szesnastkowymi już skonfigurowanymi.
Te kolory motywów są używane w całej aplikacji i wyglądają tak:
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>
Jeśli potrzebujesz dodatkowych kolorów, dobrą praktyką jest zdefiniowanie koloru w dwóch kroki w xml. Najpierw nazwij kolor wartości szesnastkowej, a następnie nazwij komponent aplikacji, który powinien uzyskać określony kolor. Ułatwia to późniejszą regulację kolorów. Ponownie, to jest w kolorach.xml .
<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
Jeśli chcesz ustawić kolor w kodzie, wykonaj następujące czynności:]}
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);
myView.setBackgroundColor(myColor);
Predefiniowane Kolory Androida
Klasa kolorów zawiera szereg predefiniowanych stałych kolorów. Możesz go używać w ten sposób.
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
Inne kolory are
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT
Color.WHITE
Color.YELLOW
Uwagi
- szybkim sposobem na znalezienie kolorów szesnastkowych jest otwarcie okna wyboru kolorów w Gimp (lub innym oprogramowaniu do edycji zdjęć).
- standardowe poziomy nieprzezroczystości w konstrukcji materiału
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-25 04:26:37
Konwertuj ten łańcuch na int
kolor, który może być użyty w setBackgroundColor
i setTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16 oznacza, że jest szesnastkowy, a nie zwykły 0-9. Wynik powinien być taki sam jak
int color = 0xFFFF0000;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-09 16:12:51
To
int color = Color.parseColor("colorstring");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-26 10:38:09
Spróbuj tego:
vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-07 13:35:50
Używam tego i działa świetnie dla mnie do ustawiania dowolnego koloru chcę.
public static final int MY_COLOR = Color.rgb(255, 102, 153);
Ustaw kolory za pomocą 0-255 dla każdego czerwonego, zielonego i niebieskiego, a następnie w dowolnym miejscu, w którym chcesz użyć tego koloru, umieść MY_COLOR zamiast Color.Niebieski lub kolor.Czerwony lub dowolny inny kolor statyczny oferowany przez klasę kolorów.
Wystarczy wyszukać w Google wykres kolorów i można znaleźć Wykres z poprawnymi kodami RGB za pomocą 0-255.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-02 13:40:55
Plik XML zapisany w res/values / colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
Ten kod aplikacji pobiera zasób kolorów:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
Ten układ XML stosuje kolor do atrybutu:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-09 04:13:43
W Xamarin Użyj tego
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-21 10:59:52
Spróbuj użyć zamiast tego 0xFFF000 i przekaż to do koloru.Metoda HSVToColor.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-09 16:13:37
Jeśli zdefiniujesz kolor w XML i chcesz go użyć do zmiany koloru tła lub czegoś takiego, to API jest tym, którego szukasz:
((TextView) view).setBackgroundResource(R.drawable.your_color_here);
W mojej próbce użyłem go do TestView
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-27 21:25:06
Dla skróconego kodu szesnastkowego
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);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-23 13:30:30