Nie jestem pewien, na jaki poziom API chcesz się kierować, ale jeśli możesz użyć rzeczy specyficznych dla API 23, możesz dodać następujące elementy do swojego AppTheme styles.xml:
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowLightStatusBar">true</item>
gdy android:windowLightStatusBar
jest ustawione na true, kolor tekstu paska stanu będzie widoczny, gdy kolor paska stanu jest biały i odwrotnie, gdy android:windowLightStatusBar
jest ustawiony na false, kolor tekstu paska stanu zostanie zaprojektowany tak, aby był widoczny, gdy kolor paska stanu jest ciemny.
Przykład:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowLightStatusBar">true</item>
</style>
możesz to zrobić programowo, jak ta odpowiedź
po prostu dodaj to
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
źródło
to jest bardzo proste:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);// set status text dark getWindow().setStatusBarColor(ContextCompat.getColor(BookReaderActivity.this,R.color.white));// set status background white
i wzajemnie:
getWindow().setStatusBarColor(ContextCompat.getColor(BookReaderActivity.this, R.color.black)); View decorView = getWindow().getDecorView(); //set status background black decorView.setSystemUiVisibility(decorView.getSystemUiVisibility() & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); //set status text light
źródło
Jak poprzednio, SYSTEM_UI_FLAG_LIGHT_STATUS_BAR wykonuje pracę w moim przypadku, nie zapomnij ustawić na wyższą niż API 22.
dodaj to do oncreate po setContentView:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); }
źródło
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);// set status text dark getWindow().setStatusBarColor(ContextCompat.getColor(MainActivity.this,R.color.colorPrimaryDark));// set status background white
Mi to pasuje
źródło
Spróbuj tego raz.
W swojej
onCreate()
metodzie działania wklej następujący kod.try { if (android.os.Build.VERSION.SDK_INT >= 21) { Window window = getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(ContextCompat.getColor(this, R.color.color_red)); } } catch (Exception e) { e.printStackTrace(); }
Uwaga: color_red - to kolor paska stanu.
źródło
W swojej
onCreate()
metodzie działania wklej następujący kod posetContentView(R.layout.activity_generic_main);
Oto przykładowy kod poniżej.
public class GenericMain extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_generic_main); getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } }
źródło
Spróbuj tej strony powitalnej, jeśli nie
getActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); getActivity().getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); getActivity().getWindow().setNavigationBarColor(ContextCompat.getColor(context, R.color.white)); getActivity().getWindow().setStatusBarColor(ContextCompat.getColor(context, R.color.white));
źródło