Saya telah mencari dokumentasi tetapi hanya menemukan ini: Tautan . Yang digunakan untuk membuat bilah tembus ? Apa yang saya coba lakukan adalah membuat bilah status benar-benar transparan (seperti yang ditunjukkan pada gambar di bawah) dan membuatnya kompatibel ke belakang untuk APK <19:
Styles.xml saya:
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/ThemeActionBar</item>
<item name="android:windowActionBarOverlay">true</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/ThemeActionBar</item>
<item name="windowActionBarOverlay">true</item>
</style>
<style name="ThemeActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid">
<item name="android:background"> @null </item>
<!-- Support library compatibility -->
<item name="background">@null</item>
<item name="android:displayOptions"> showHome | useLogo</item>
<item name="displayOptions">showHome|useLogo</item>
</style>
</resources>
Apa yang bisa saya lakukan:
android:fitsSystemWindows="true"
ke activity_main.xml saya. Bilah sistem transparan dan tidak transparan.<item name="android:statusBarColor">@android:color/transparent</item>
tema Anda :)android:windowTranslucentStatus
ke false dan membuat bilah status transparan. Sekarang saya melakukan hal yang sama dengan bilah navigasi dan menambahkan<item name="android:navigationBarColor">@android:color/transparent</item>
tetapi membuat kedua bilah menjadi abu-abu. UGH!w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
bukanCukup tambahkan baris kode ini ke file java utama Anda:
sumber
Anda dapat menggunakan perpustakaan eksternal StatusBarUtil :
Tambahkan ke level modul Anda
build.gradle
:Kemudian Anda dapat menggunakan util berikut untuk Aktivitas untuk membuat bilah status transparan:
Contoh:
sumber
Berfungsi untuk Android KitKat dan yang lebih tinggi (Bagi mereka yang ingin menghapus status bar dan tidak memanipulasi NavigationBar, karena semua jawaban ini juga akan transparan pada NavigationBar!)
Cara termudah untuk mencapainya:
Letakkan 3 baris kode ini di
styles.xml (v19)
-> jika Anda tidak tahu cara memilikinya (v19), tulis saja di default Andastyles.xml
dan kemudian gunakan alt+ enteruntuk membuatnya secara otomatis:Dan sekarang, pergi ke
MainActivity
Kelas Anda dan keluarkan Metode ini dari onCreate di kelas:Kemudian masukkan kode ini dalam
onCreate
metode Kegiatan:Itu dia!
sumber
StatusBar dan NavigationBar yang sepenuhnya transparan
sumber
Untuk menggambar tata letak Anda di bawah bilah status:
values / styles.xml
values-v21 / styles.xml
Gunakan CoordinatorLayout / DrawerLayout yang sudah menangani parameter fitsSystemWindows atau buat tata letak Anda sendiri seperti ini:
main_activity.xml
Hasil:
Tangkapan layar:
sumber
Anda Dapat Menggunakan Kode Di Bawah Ini Untuk Membuat Bilah Status Transparan. Lihat Gambar dengan sorotan merah yang membantu Anda mengidentifikasi penggunaan kode di bawah ini
Cuplikan kode Kotlin untuk aplikasi Android Anda
Langkah: 1 Tuliskan kode pada Metode On create
Langkah2: Anda Membutuhkan metode SetWindowFlag yang menjelaskan dalam kode di bawah ini.
Cuplikan kode Java untuk aplikasi Android Anda:
Langkah1: Kode Kegiatan Utama
Langkah2: Metode SetWindowFlag
sumber
Gunakan
android:fitsSystemWindows="false"
di tata letak teratas Andasumber
Berikut ini adalah ekstensi di kotlin yang melakukan trik:
sumber
Dengan menggunakan kode ini dalam XML Anda, Anda akan dapat melihat bilah waktu dalam aktivitas Anda:
sumber
ADA TIGA LANGKAH:
1) Cukup gunakan segmen kode ini ke metode @OnCreate Anda
jika Anda mengerjakan Fragment, Anda harus meletakkan segmen kode ini dalam metode @OnCreate aktivitas Anda.
2) Pastikan juga mengatur transparansi di /res/values-v21/styles.xml:
Atau Anda dapat mengatur transparansi secara program:
3) Dengan cara apa pun Anda harus menambahkan segmen kode di styles.xml
CATATAN: Metode ini hanya berfungsi pada API 21 dan di atasnya.
sumber
Anda juga dapat melihat contoh saya dengan avatar animasi dan teks animasi
CollapsingAvatarToolbarSample
Baca posting saya di Medium
Jadi izinkan saya untuk menjelaskan cara kerjanya. Saya membuat tampilan kustom yang diimplementasikan AppBarLayout.OnOffsetChangedListener . Di dalam HeadCollapsing Custom View saya menemukan tampilan teks dan gambar di AppBarLayout.
sumber
Anda dapat mencobanya.
sumber
Sementara semua jawaban di atas beredar di sekitar ide dasar yang sama dan Anda bisa membuatnya bekerja dengan tata letak sederhana menggunakan salah satu contoh di atas. Namun saya ingin mengubah warna latar belakang saat menggunakan navigasi fragmen 'layar penuh' (menyamping tab) dan mempertahankan navigasi, tab, dan panel aksi biasa.
Setelah membaca dengan seksama sebuah artikel oleh Anton Hadutski saya lebih memahami apa yang sedang terjadi.
Saya miliki
DrawerLayout
denganConstraintLayout
(yaitu wadah) yang telahToolbar
, termasuk untuk fragmen utama danBottomNavigationView
.Pengaturan
DrawerLayout
harusfitsSystemWindows
benar tidak cukup, Anda perlu mengatur keduanyaDrawerLayout
danConstraintLayout
. Dengan asumsi bilah status transparan, warna bilah status sekarang sama dengan warna latar belakangConstraintLayout
.Namun, fragmen yang disertakan masih inset status bar, jadi menghidupkan fragmen 'layar penuh' lain di atas dengan tidak mengubah warna bilah status.
Sedikit kode dari artikel disebut dalam
Activity
'sonCreate
:Dan semuanya baik-baik saja, kecuali sekarang
Toolbar
tidak mengatasi tinggi bilah status. Beberapa lebih merujuk pada artikel dan kami memiliki solusi yang berfungsi penuh:Main_activity.xml (harap dicatat bahwa marginTop in
Toolbar
adalah untuk keperluan pratinjau, itu akan diganti oleh kode):sumber
Saya menemukan mengutak-atik styles.xml dan aktivitas terlalu rumit sehingga menciptakan metode utilitas umum yang memiliki opsi di bawah ini ditetapkan
Jawa
Kotlin DSL
Dan hanya itu yang diperlukan untuk mencapai bilah status transparan. Semoga ini membantu.
sumber
android:fitsSystemWindows="true"
hanya bekerja di v21. Kita dapat mengaturnya di tema xml atau di tata letak induk sukaLinearLayout
atau dalamCoordinateLayout
. Untuk di bawah v21, Kami tidak dapat menambahkan bendera ini. Harap buat folder nilai yang berbeda denganstyle.xml
file yang berbeda sesuai kebutuhan Anda.sumber
Ini bekerja untuk saya:
sumber
Yang dibutuhkan hanyalah masuk
MainActivity.java
sumber
dalam kasus saya karena saya memiliki bilah alat bawah Saya punya masalah ketika menguji solusi sebelumnya, tombol sistem android ditutupi dengan menu bawah saya solusi saya adalah untuk menambahkan dalam aktivitas:
sumber
Anda dapat menggunakan kode di bawah ini.
Sertakan tata letak ini di tata letak utama Anda.
toolbar.xml
Catatan: Anda dapat mengganti SDP dan SSP dengan dp dan sp masing-masing.
sumber
dalam kasus saya, saya sama sekali tidak memanggil "onCreate" (ini adalah aplikasi asli yang bereaksi dan ini dapat diperbaiki juga dengan menggunakan komponen StatusBar yang asli-reaksi) kita juga dapat menggunakan ini:
sumber
Ini seharusnya bekerja
// Dalam Aktivitas's onCreate () misalnya
sumber
Saya menemukan jawabannya ketika saya menyelidiki perpustakaan ini: https://github.com/laobie/StatusBarUtil
jadi Anda perlu menambahkan kode berikut ke aktivitas Anda
sumber
tambahkan baris ini ke dalam Aktivitas Anda sebelum setContentView ()
tambahkan 2 baris ini ke dalam AppTheme Anda
dan hal terakhir minSdkVersion Anda harus b 19
sumber
Jangan gunakan
windowLightStatusBar
gunakan sebagai gantinyastatusBarColor = @android:color/transparent
sumber
Ini hanya untuk API Level> = 21. Ini berfungsi untuk saya. Ini kode saya (Kotlin)
sumber