Pertama-tama ini bukan duplikat seperti pada Bagaimana mengubah warna latar belakang status bar android
Bagaimana cara mengubah warna bilah status yang seharusnya sama dengan di bilah navigasi.
Saya ingin warna bilah status sama dengan warna bilah navigasi
android
android-navigation
android-statusbar
codercat
sumber
sumber
android:statusBarColor
. Anda bisa menambahkannya kevalues-v21/styles.xml
.Jawaban:
Android 5.0 Lollipop memperkenalkan tema Desain Bahan yang secara otomatis mewarnai bilah status berdasarkan
colorPrimaryDark
nilai tema.Ini didukung pada perangkat pre-lollipop berkat dukungan perpustakaan-v7-appcompat mulai dari versi 21. Blogpost tentang dukungan appcompat v21 dari Chris Banes
Baca lebih lanjut tentang Tema Bahan di situs web resmi Pengembang Android
sumber
Memperbarui:
Lollipop:
Ditambahkan dalam API level 21
Android Lollipop menghadirkan kemampuan untuk mengubah warna bilah status di aplikasi Anda untuk pengalaman pengguna yang lebih mendalam dan selaras dengan Google
Material Design Guidelines
.Inilah cara Anda dapat mengubah warna bilah status menggunakan
window.setStatusBarColor
metode baru yang diperkenalkanAPI level 21
.Mengubah warna bilah status juga memerlukan pengaturan dua bendera tambahan pada Jendela; Anda perlu menambahkan
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
bendera dan menghapusFLAG_TRANSLUCENT_STATUS
bendera.Kode Kerja:
...
Referensi pengembang resmi: setStatusBarColor (int)
Contoh: bahan-desain-di mana-mana
Chris Banes Blog- appcompat v21: desain material untuk perangkat pra-Lollipop!
Untuk
transitionName
latar belakang tampilan akanandroid:status:background
.sumber
android:statusBarColor
Andavalues-v21/styles.xml
per androiddocs.com/training/material/theme.html seperti itu<item name="android:statusBarColor">@color/primary_color</item>
Tempatkan ini adalah values-v21 / styles.xml Anda, untuk mengaktifkannya di Lollipop:
sumber
targeApi
atribut jika Anda ingin mempertahankan file gaya tunggal. Baca jawaban saya untuk referensi stackoverflow.com/a/48565459/4291272ini cara yang sangat mudah untuk melakukan ini tanpa Library: jika versi OS tidak didukung - di bawah kitkat - jadi tidak ada yang terjadi. saya melakukan langkah-langkah ini:
maka saya membuat metode ini:
Anda juga memerlukan kedua metode tersebut untuk mendapatkan tinggi tindakan & status bar:
maka satu-satunya yang Anda butuhkan adalah baris ini untuk mengatur warna bilah status:
sumber
Seperti yang dikatakan @Niels, Anda harus menempatkan pada values-v21 / styles.xml:
Tapi tambahkan
tools:targetApi="lollipop"
jika Anda ingin styles.xml tunggal, seperti:sumber
Yah, solusi Izhar baik-baik saja tetapi, secara pribadi, saya mencoba untuk menghindari kode yang terlihat seperti ini:
Juga, saya juga tidak suka menggandakan kode. Dalam jawaban Anda, saya harus menambahkan baris kode tersebut di semua Aktivitas:
Jadi, saya mengambil solusi Izhar dan menggunakan XML untuk mendapatkan hasil yang sama: Buat tata letak untuk StatusBar status_bar.xml
Perhatikan atribut ketinggian dan ketinggian, ini akan diatur dalam nilai, nilai-v19, nilai-v21 lebih jauh ke bawah.
Tambahkan tata letak ini ke tata letak aktivitas Anda menggunakan include, main_activity.xml:
Untuk Bilah Alat, tambahkan atribut margin atas:
Di appTheme style-v19.xml dan styles-v21.xml Anda, tambahkan windowTranslucent attr:
styles-v19.xml, v21:
Dan akhirnya, pada dimens Anda, dimens-v19, dimens-v21, tambahkan nilai untuk Toolbar topMargin, dan ketinggian statusBarHeight: dimens.xml kurang dari KitKat:
Tinggi status bar selalu 24dp dimens-v19.xml untuk KitKat dan di atasnya:
dimens-v21.xml untuk Lolipop, cukup tambahkan elevasi jika diperlukan:
Ini adalah hasil untuk Jellybean KitKat dan Lollipop:
sumber
Anda dapat menggunakan kode sederhana ini:
Satu kalimat di Kotlin:
Jawaban asli dengan Java & versi manual periksa:
sumber
ContextCompat
. Di Kotlin kemudian hanya ini:window.statusBarColor = ContextCompat.getColor(this, R.color.colorName)
Cukup buat tema baru di res / values / styles.xml tempat Anda mengubah "colorPrimaryDark" yang merupakan warna bilah status:
Dan ubah tema aktivitas di AndroidManifest.xml ke yang Anda inginkan, pada aktivitas berikutnya Anda dapat mengubah warna kembali ke yang asli dengan memilih tema aslinya:
Beginilah tampilan res / values / colors.xml Anda :
sumber
Untuk mengubah warna lolipop di atas cukup tambahkan ini ke styles.xml Anda
tetapi ingat , jika Anda ingin memiliki warna terang untuk bilah status, tambahkan baris ini juga
sumber
Anda dapat mengubah warna bilah status dengan fungsi ini. bekerja di android L berarti API 21 dan lebih tinggi dan membutuhkan string warna seperti
"#ffffff"
.sumber
Saya memiliki persyaratan ini: Mengubah secara terprogram warna status bar menjaganya transparan , untuk memungkinkan Navigasi Drawer untuk menggambar dirinya tumpang tindih bilah status trasparent.
Saya tidak bisa melakukan itu menggunakan API
Jika Anda memeriksa di sini di stack overflow semua orang sebelum baris kode mengatur transparansi bilah status menjadi solid
Saya dapat mengelola warna dan transparansi bilah status seperti ini:
Android 4: tidak banyak yang dapat Anda lakukan, karena Anda tidak dapat mengelola warna bilah status dari API ... satu-satunya hal yang dapat Anda lakukan adalah mengatur bilah status sebagai tembus dan memindahkan elemen berwarna UI Anda di bawah status batang. Untuk melakukan ini, Anda harus bermain
dalam tata letak utama Anda. Ini memungkinkan Anda untuk menggambar tata letak Anda di bawah bilah status. Maka Anda perlu bermain dengan beberapa bantalan dengan bagian atas tata letak utama Anda.
Android 5 dan di atasnya: Anda harus mendefinisikan gaya dengan
ini memungkinkan laci navigasi untuk tumpang tindih bilah status.
Kemudian untuk mengubah warna menjaga bilah status transparan Anda harus mengatur warna bilah status dengan
di mana drawerLayout didefinisikan seperti ini
sumber
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
. Bagaimanapun, setelah pencarian selama berhari-hari, saya menemukan sesuatu yang benar-benar berfungsi (hanya diuji pada Lolllipop untuk saat ini). Terima kasihEdit colorPrimary di colors.xml dalam Values ke warna yang Anda inginkan menjadi Status Bar. Sebagai contoh:
sumber
Untuk Mengubah warna bilah status, buka
res/values-v21/styles.xml
dan warna bilah statussumber
Jika Anda ingin mengubah warna bilah status secara terprogram (dan asalkan perangkat memiliki Android 5.0). Ini adalah cara sederhana untuk mengubah statusBarColor dari Kegiatan apa pun dan metode yang sangat mudah ketika fragmen yang berbeda memiliki warna bilah status yang berbeda.
sumber
Jika Anda ingin bekerja di Android 4.4 dan di atasnya, coba ini. Saya merujuk pada jawaban Harpreet dan tautan ini. Android dan bilah status transparan
Pertama, panggil metode setStatusBarColored dalam metode onCreate Activity (saya letakkan di kelas util). Saya menggunakan gambar di sini, Anda dapat mengubahnya untuk menggunakan warna.
Sebelum:
Setelah:
Warna bilah status telah diubah, tetapi bilah navi terpotong, jadi kita perlu mengatur margin atau offset bilah navi dalam metode onCreate.
Maka bilah status akan terlihat seperti ini.
sumber
Inilah yang bekerja untuk saya di KitKat dan dengan hasil yang baik.
sumber
Satu lagi solusi:
sumber
ubah colorPrimaryDark ke warna keinginan Anda menjadi file res / values / styles.xml
sumber