Saya tidak yakin level API apa yang Anda coba targetkan, tetapi jika Anda dapat menggunakan API 23 hal-hal tertentu, Anda dapat menambahkan yang berikut ini ke AppTheme styles.xml:
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:windowLightStatusBar">true</item>
Jika android:windowLightStatusBar
disetel ke true, warna teks bilah status akan dapat dilihat saat warna bilah status putih, begitu pula sebaliknya jika android:windowLightStatusBar
disetel ke false, warna teks bilah status akan didesain agar terlihat saat warna bilah status gelap.
Contoh:
<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>
Anda dapat melakukannya secara terprogram seperti jawaban ini
tambahkan saja ini
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
sumber
itu sangat sederhana:
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
dan sebaliknya:
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
sumber
Seperti sebelumnya, SYSTEM_UI_FLAG_LIGHT_STATUS_BAR melakukan pekerjaan dalam kasus saya, jangan lupa untuk mengatur lebih tinggi dari API 22.
tambahkan ini ke oncreate setelah setContentView:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); }
sumber
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
Ini bekerja untuk saya
sumber
Dalam
onCreate()
metode aktivitas Anda , tempel kode berikut setelahsetContentView(R.layout.activity_generic_main);
Berikut adalah contoh kode di bawah ini.
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); } }
sumber
Coba ini sekali.
Dalam
onCreate()
metode aktivitas Anda , tempel kode berikut.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(); }
Catatan: color_red - adalah warna bilah status.
sumber
Coba ini jika bukan halaman splash
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));
sumber