Ich bin nicht sicher, auf welche API-Ebene Sie abzielen möchten, aber wenn Sie API 23-spezifische Inhalte verwenden können, können Sie Ihrer AppTheme styles.xml Folgendes hinzufügen:
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowLightStatusBar">true</item>
Wenn android:windowLightStatusBar
true festgelegt ist, kann die Textfarbe der Statusleiste angezeigt werden, wenn die Farbe der Statusleiste weiß ist. Wenn sie android:windowLightStatusBar
auf false gesetzt ist, wird die Textfarbe der Statusleiste so angezeigt, dass sie angezeigt wird, wenn die Farbe der Statusleiste angezeigt wird dunkel.
Beispiel:
<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>
Sie können dies programmgesteuert wie diese Antwort tun
füge das einfach hinzu
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
quelle
es ist sehr einfach:
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
und umgekehrt:
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
quelle
Wie zuvor erledigt die SYSTEM_UI_FLAG_LIGHT_STATUS_BAR die Arbeit in meinem Fall. Vergessen Sie nicht, eine höhere als API 22 festzulegen.
Fügen Sie dies zu oncreate nach dem setContentView hinzu:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); }
quelle
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
Für mich geht das
quelle
Versuchen Sie dies einmal.
Fügen Sie in Ihrer Aktivitätsmethode
onCreate()
den folgenden Code ein.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(); }
Hinweis: color_red - ist die Farbe der Statusleiste.
quelle
Fügen Sie in Ihrer Aktivitätsmethode
onCreate()
den folgenden Code nach dem einsetContentView(R.layout.activity_generic_main);
Hier ist der folgende Beispielcode.
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); } }
quelle
Versuchen Sie dies, wenn keine Begrüßungsseite vorhanden ist
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));
quelle