Android navigační tlačítka
-
Mám problém s bílou Android navigační lištou. Nic nevidím, protože jsou bílé tlačítka na bílém podkladu. Preferoval bych černou lištu a bílé tlačítka i když má člověk nastaven white režim. Anebo když už musí být ta bílá, tak alespoň černé ty tlačítka. Ostatní aplikace s tím nemají problém. Přikládám obrázky. Je to sice starší telefon XIAOMI s androidem 10, ale fungovat by to mohlo i tam...


-
@i.car Dobrý den, jakou máte prosím verzi aplikace? Kontroluji barvu navigačních tlačítek na Androidu 12 a 13 (nejnovější verze aplikace) a barva je šedá, dobře viditelná.
-
@Ewelina
9.72.0, což je předpokládám poslední.
Verze androidu je 10.
Na novém telefonu s Android 15 mám tlačítka také šedé, ale na té desítce jenom u mapy aplikace mám takové bílé... -
Takže tento kód funguje mi funguje. Doporučuji to použít a dát to třebas i na uživatelské nastavení ať si každý vybere co je libo (pokud nevybere nic, necháte jak máte teď, bez jakéhokoliv volání kódu):
private void setLightNavBar() { // bílý podklad + tmavé ikony setNavBarColor(Color.WHITE, true); } private void setDarkNavBar() { // černý podklad + světlé ikony setNavBarColor(Color.BLACK, false); } private void setTransparentNavBar() { Window w = getWindow(); // 1) Musíme povolit "draw behind" (obsah sahá pod navigaci) View decor = w.getDecorView(); int vis = decor.getSystemUiVisibility(); vis |= View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; // zrušíme flag pro světlé ikony (většinou na průhledném chceme světlé ikony) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { vis &= ~View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; } decor.setSystemUiVisibility(vis); // 2) Ujistíme se, že systém kreslí barvy w.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); w.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // 3) Transparentní bar w.setNavigationBarColor(Color.TRANSPARENT); // 4) API 30+: nastavíme appearance přes platformní WindowInsetsController if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { WindowInsetsController ic = w.getInsetsController(); if (ic != null) { // zde 0 = tmavé ikony NE, tedy světlé ikony (často lepší na průhledném) ic.setSystemBarsAppearance(0, WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS); } } } // ---------------------- // pomocné metody // ---------------------- private void setNavBarColor(int color, boolean useLightIcons) { Window w = getWindow(); View decor = w.getDecorView(); // 1) Odebereme "draw-behind" layout flags (pokud byly) int vis = decor.getSystemUiVisibility(); vis &= ~View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; vis &= ~View.SYSTEM_UI_FLAG_LAYOUT_STABLE; // 2) Správně nastavíme flag pro světlé ikony (API 26+) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (useLightIcons) { vis |= View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; } else { vis &= ~View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR; } } decor.setSystemUiVisibility(vis); // 3) Ujistíme se že systém kreslí barvy (ne translucent) w.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); w.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // 4) Nastavíme barvu navigační lišty w.setNavigationBarColor(color); // 5) API 30+: preferuj platformní API pro appearance (spolehlivější) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { WindowInsetsController ic = w.getInsetsController(); if (ic != null) { int appearance = useLightIcons ? WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS : 0; ic.setSystemBarsAppearance(appearance, WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS); } } } -
ve verzi 9.73.1 to ještě nefunguje, tak budu čekat dál, snad se dočkám ...
-
@Ewelina Dobrý den, mám podobný problém, Samsung S23, Android 16, poslední verze, Mapy 9.73. 1. Dělalo to i na předešlé verzi., špatně čitelné vrchní ikonky.

-
@Josef-Boleslav
Myslím, že by bylo opravdu vhodné dát uživateli na výběr jestli chce bílé, černé anebo průhledné někde v nastavení, protože jak se navigační tlačítka a horní menu chovají velmi závisí na výrobci telefonu, resp. verzí androidu a jak ji zasvinil svými customizacemi. Ať se budete snažit jakkoliv, univerzál nenajdete, volba v nastavení povede naprosté spokojenosti všech.