Saya mencoba AppCompat di Marshmallow. Dan saya ingin memiliki bilah status transparan namun berubah menjadi putih. Saya telah mencoba beberapa solusi tetapi tidak berhasil untuk saya ( Status bar transparan tidak berfungsi dengan windowTranslucentNavigation = "false" , Lollipop: menggambar di belakang statusBar dengan warna disetel ke transparan ). Berikut kode terkait.
Styles.xml saya
<style name="Bacon" parent="Theme.Bacon"/>
<style name="Theme.Bacon" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/theme_primary</item>
<item name="colorPrimaryDark">@color/theme_primary_dark</item>
<item name="colorAccent">@color/theme_accent</item>
<item name="windowActionBar">false</item>
<item name="windowActionBarOverlay">true</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@color/background_material_light</item>
</style>
<style name="Theme.Bacon.Detail" parent="Bacon"/>
v21
<style name="Bacon" parent="Theme.Bacon">
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>
<style name="Theme.Bacon.Detail" parent="Bacon">
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
Aktivitas
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" />
</FrameLayout>
Pecahan
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="192dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginBottom="32dp"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
app:statusBarScrim="@color/black_trans80">
<ImageView
android:id="@+id/photo"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:contentDescription="@string/photo"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax" />
<android.support.v7.widget.Toolbar
android:id="@+id/anim_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
android
android-support-library
android-appcompat
androiddesignsupport
android-6.0-marshmallow
pt2121
sumber
sumber
Jawaban:
Saya menemukan jawabannya di tautan ini: Status Bar Color tidak berubah dengan Relative Layout sebagai elemen root
Jadi ternyata kita perlu menghapus file
di styles.xml (v21). Dan itu bekerja dengan baik untuk saya.
sumber
(Sedikit terlambat ke pesta tapi mungkin bisa membantu seseorang)
Saya memiliki masalah yang sama persis. Entah bagaimana, beberapa aktivitas normal sementara aktivitas baru yang saya buat menampilkan bilah status putih, bukan
colorPrimaryDark
nilai.Setelah mencoba beberapa tips, saya menemukan bahwa aktivitas kerja normal semua menggunakan
CoordinatorLayout
sebagai root dari layout, sedangkan untuk yang lain saya menggantinya dengan layout biasa karena saya tidak membutuhkan fitur (animasi, dll) yang disediakan olehCoordinatorLayout
.Jadi solusinya adalah membuat
CoordinatorLayout
tata letak root, lalu di dalamnya tambahkan root tata letak sebelumnya. Berikut ini contohnya:HARAP DICATAT bahwa tanpa
android:fitsSystemWindows="true"
solusi ini tidak berhasil untuk saya.Diuji di Lollipop dan Marshmallow
sumber
android:fitsSystemWindows="true"
keCoordinatorLayout
dalam Android 8.CoordinatorLayout
ketika saya mengalami masalah yang sama dan properti khusus yang memperbaikinya untuk saya adalahandroid:fitsSystemWindows="true"
android:fitsSystemWindows="true"
tidak berhasil untuk saya. Apa yang memecahkan masalah saya adalah menggunakan tema yang tidak adaAppTheme.NoActionBar
dalam aktivitas dengan fileCoordinatorLayout
. Saya tidak tahu mengapa itu memperbaikinya.CoordinatorLayout
atauandroid:fitsSystemWindows="true"
tidak ada yang berhasil untuk saya.sumber
Anda harus menambahkan properti ini pada gaya Anda untuk melihat konten
sumber
Tambahkan ini di style.xml Anda
dan ini di onCreate () Anda;
sumber
Setelah tidak berhasil mencoba semua hal di atas, saya menemukan bahwa pengaturan tema secara eksplisit memperbaiki masalah.
Itu harus dilakukan sebelum super.OnCreate () dalam aktivitas Anda.
sumber
Letakkan saja item ini di v21 \ styles.xml Anda:
benar
Ini akan terlihat seperti ini:
sumber
false
nilai dalam 2 item terakhir. Aneh, tapi terima kasih.Saya menghadapi masalah yang sama. Apa yang saya lakukan adalah, di file "v21 / styles.xml" a mengubah nilai true:
untuk:
sumber
Anda akan melihat baris kode itu di values / styles / styles.xml (v21). Hapus itu dan itu menyelesaikan masalah
Tautan ke jawaban ini
sumber
Saya memperbaiki masalah saya dengan mengubah tata letak Aktivitas saya dari FrameLayout ke RelativeLayout. Terima kasih semua orang yang mencoba membantu!
Coba hierarchy-viewer atau ViewInspector . Alat-alat ini mungkin membantu Anda.
sumber
Hapus saja tag berikut dari gaya v21 @android: color / transparent
Ini berhasil untuk saya.
sumber
Pendekatan yang lebih baik
Periksa file style.xml Anda di mana tema NoActionBar Anda ada di sana. Pastikan itu memiliki induk sebagai Theme.AppCompat.NoActionBar dan juga menyesuaikannya dengan menambahkan skema warna Anda. Terakhir, atur tema Anda dalam manifes sesuai kebutuhan.
Di bawah ini adalah contoh file styles.xml saya (ActionBar + NoActionBar).
sumber
Saya telah menemukan solusi untuk ini -
tambahkan ini ke dalam gaya Anda dan ini akan bekerja untuk api 21 atau lebih tinggi.
sumber
Bagi saya itu berhasil dengan melakukan hal berikut:
.NoActionBar
android.support.design.widget.AppBarLayout
android.support.design.widget.CoordinatorLayout
sebagai tata letak induk.Pada dasarnya ini adalah langkah ketiga yang menggambar bilah status
colorPrimaryDark
jika tidak, itu tidak akan digambar jika Anda menggunakanNoActionBar
tema. Langkah kedua akan memberikan toolbar Anda overlay .sumber
Untuk gaya v23
Untuk gaya v21
sumber
[
Perluas res -> nilai -> direktori gaya dari panel proyek.
Buka styles.xml (v21)
GUNAKAN SALAH SATU DARI CARA DI BAWAH
android:windowDrawsSystemBarBackgrounds
properti.android:statusBarColor
properti.android:statusBarColor
garis propert.sumber
Jika v21 / styles.xml Anda berisi
Kemudian, Hapus atau komentari baris di bawah atau ubah warna bilah status,
Ini bekerja dengan baik. Semoga bermanfaat. Terima kasih.
sumber
Saya tidak yakin apakah ini terlambat tetapi saya harap ini membantu seseorang. * Buat tampilan palsu dengan latar belakang transparan yang sesuai dengan tata letak, dan jadikan tata letak koordinat sebagai elemen tata letak root Anda.
sumber
Ini berhasil bagi saya
sumber
Dugaan saya adalah bahwa ini disebabkan oleh Anda
android:windowBackground
. Apakah@color/background_material_light
referensi ke putih?sumber
<item name="android:statusBarColor">@android:color/transparent</item>
dengan<item name="android:statusBarColor">@null</item>
.Periksa apakah Toolbar ini berubah putih - AppBar tidak digambar setelah layar digulir
https://code.google.com/p/android/issues/detail?id=178037#c19
Saya menggunakan perpustakaan 23.0.0. dan bug masih terjadi.
Solusi untuk ini adalah menambahkan Tampilan yang hampir tidak memakan ruang dan tidak terlihat. Lihat struktur di bawah.
Pertanyaan ini di Stackoverflow.com merujuk ke bug ini juga: CoordinatorLayout Toolbar tidak terlihat saat masuk hingga AppBarLayout setinggi penuh - Tata letak terkadang tidak terlihat setelah masuk ke tampilan (meskipun tidak dimasukkan)
sumber
Jika Anda menggunakan RelativeLayout / CoordinatorLayout, ini adalah solusi yang berhasil untuk saya:
Anda harus menggunakan
Rember untuk menggunakan CoordinatorLayout daripada RelativeLayout (kinerjanya lebih baik dan bekerja sempurna dengan AppBarLayout)
Beginilah seharusnya fragmen Anda dimulai
Pengkodean yang bagus!
sumber
tambahkan item 'windowTranslucentStatus' dalam gaya
sumber
Tambahkan ini di style.xml Anda
Catatan: Pewarnaan bilah status tidak didukung di bawah API level 21.
sumber
Tambahkan 2 baris ini dalam file java di bawah ini
sumber