Chciałbym użyć koloru z łańcucha szesnastkowego, takiego jak "#FFFF0000"(powiedzmy) zmiana koloru tła układu.
Color.HSVToColorwygląda jak zwycięzca, ale wymaga float[]parametru.
Czy w ogóle jestem blisko rozwiązania?
Chciałbym użyć koloru z łańcucha szesnastkowego, takiego jak "#FFFF0000"(powiedzmy) zmiana koloru tła układu.
Color.HSVToColorwygląda jak zwycięzca, ale wymaga float[]parametru.
Czy w ogóle jestem blisko rozwiązania?
Odpowiedzi:
Wypróbuj Colormetodę klasową:
public static int parseColor (String colorString)
Obsługiwane formaty to: #RRGGBB #AARRGGBB „czerwony”, „niebieski”, „zielony”, „czarny”, „biały”, „szary”, „błękitny”, „magenta”, „żółty”, „jasnoszary”, „ciemnoszary” „
#000wartości?
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) }popraw mnie, jeśli się mylę
if(colorString.length() == 4 && colorString[0] == '#')
Próbować:
myLayout.setBackgroundColor(Color.parseColor("#636161"));
To pytanie pojawia się w przypadku wielu wyszukiwań związanych z kolorem szesnastkowym, dlatego dodam tutaj streszczenie.
Kolory heksadecymalne mają postać RRGGBBlub AARRGGBB(alfa, czerwony, zielony, niebieski). Z mojego doświadczenia wynika, że korzystając intbezpośrednio, musisz użyć pełnego AARRGGBBformularza. Jeśli masz tylko RRGGBBformularz, po prostu go poprzedź, FFaby alfa (przezroczystość) była całkowicie nieprzezroczysta. Oto, jak ustawić to w kodzie. Używanie 0xna początku oznacza, że jest szesnastkowy, a nie bazowy 10.
int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);
Jak zauważyli inni, możesz Color.parseStringtak używać
int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
Pamiętaj, że ciąg musi zaczynać się od #. Zarówno RRGGBBi AARRGGBBformaty są obsługiwane.
W miarę możliwości powinieneś pobierać kolory z XML. Jest to zalecana opcja, ponieważ znacznie ułatwia wprowadzanie zmian kolorów w aplikacji. Jeśli ustawisz wiele kolorów heksadecymalnych w całym kodzie, trudno będzie później je zmienić.
Projekt materiału dla Androida ma podniebienie kolorów z już skonfigurowanymi wartościami szesnastkowymi.
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 krokach w xml. Najpierw nazwij kolor wartości heksadecymalnej, a następnie nazwij komponent aplikacji, który powinien otrzymać określony kolor. Ułatwia to późniejsze dostosowanie kolorów. Ponownie, to jest w colors.xml .
<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
Następnie, 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);
Klasa Color zawiera szereg predefiniowanych stałych kolorów. Możesz użyć tego w ten sposób.
int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);
Inne kolory to
Color.BLACKColor.BLUEColor.CYANColor.DKGRAYColor.GRAYColor.GREENColor.LTGRAYColor.MAGENTAColor.REDColor.TRANSPARENTColor.WHITEColor.YELLOWKonwertuj ten ciąg na intkolor, którego można używać w setBackgroundColorisetTextColor
String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);
16 oznacza, że jest szesnastkowy, a nie zwykłe 0-9. Wynik powinien być taki sam jak
int color = 0xFFFF0000;
#80000000w którym to przypadku będzie wersja int int color = 0x80000000;. Jeśli to nie zadziała, opublikuj nowe pytanie z większą ilością szczegółów, aby więcej osób niż ja to zauważyło. Pamiętaj, że #80000000jest to półprzezroczysty czarny kolor.
Jego
int color = Color.parseColor("colorstring");
Używam tego i działa mi świetnie do ustawiania dowolnego koloru, jaki 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, po prostu wstaw MY_COLOR zamiast Color.BLUE lub Color.RED lub dowolnego innego statycznego koloru oferowanego przez klasę Color.
Wystarczy wyszukać w Google tabelę kolorów, aby znaleźć tabelę z poprawnymi kodami RGB za pomocą 0-255.
W Xamarin Użyj tego
Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
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 koloru:
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"/>
Spróbuj zamiast tego użyć 0xFFF000 i przekaż to do metody Color.HSVToColor.