Saya mencoba membuat ulang tampilan Theme.AppCompat.Light.DarkActionBar
dengan pustaka dukungan baru Toolbar.
Jika saya memilih Theme.AppCompat.Light
toolbar saya akan terang dan jika saya memilih Theme.AppCompat
akan menjadi gelap. (Secara teknis Anda harus menggunakan .NoActionBar
versi tersebut tetapi sejauh yang saya tahu satu-satunya perbedaan adalah
<style name="Theme.AppCompat.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Sekarang tidak ada Theme.AppCompat.Light.DarkActionBar
tetapi secara naif saya pikir itu akan cukup baik untuk membuat saya sendiri
<style name="Theme.AppCompat.Light.DarkActionBar.NoActionBar">
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
Namun dengan ini bilah alat saya masih Light
bertema. Saya telah menghabiskan berjam-jam sekarang mencoba kombinasi yang berbeda untuk mencampur tema Gelap (dasar) dan tema Terang tetapi saya tidak dapat menemukan kombinasi yang akan membuat saya memiliki latar belakang terang pada segala hal kecuali bilah alat.
Apakah ada cara untuk mendapatkan AppCompat.Light.DarkActionBar
tampilan dengan import android.support.v7.widget.Toolbar
?
ThemeOverlay.AppCompat.ActionBar
bilah alat putih dengan teks hitam sehingga tampaknya tidak berfungsi dengan baik. Sepertinya sistem tidak peduli dengan yang<item name="android:colorBackground">@color/background_material_dark</item>
masukBase.ThemeOverlay.AppCompat.Dark
. Tapi saya akan terus menggali. (Dan saya telah membaca halaman itu. Itu adalah salah satu titik awal saya. Sepertinya masih belum berhasil.)android:background="?attr/colorPrimary"
di Toolbar dan<item name="colorPrimary">@color/background_material_dark</item>
dalam gaya saya sehingga secara otomatis menyesuaikan warna aplikasi utama.Edit: Setelah memperbarui ke appcompat-v7: 22.1.1 dan menggunakan
AppCompatActivity
sebagai gantiActionBarActivity
gaya saya.xml terlihat seperti:Catatan: Ini berarti saya menggunakan yang
Toolbar
disediakan oleh kerangka kerja (TIDAK termasuk dalam file XML).Ini berhasil untuk saya:
file styles.xml:
Pembaruan: Kutipan dari blog Gabriele Mariotti .
sumber
Ok setelah menghabiskan banyak waktu ke dalam masalah ini, inilah cara saya berhasil mendapatkan penampilan yang saya harapkan. Saya membuatnya menjadi jawaban terpisah sehingga saya bisa mendapatkan semuanya di satu tempat.
Ini kombinasi beberapa faktor.
Pertama, jangan mencoba membuat toolbar berfungsi dengan baik hanya melalui tema. Sepertinya tidak mungkin.
Jadi terapkan tema secara eksplisit ke Toolbar Anda seperti dalam jawaban oRR
layout / toolbar.xml
Bagaimanapun ini adalah saus ajaib. Untuk benar-benar mendapatkan warna latar belakang yang saya harapkan Anda harus mengganti
background
atribut di tema Toolbar Andanilai / gaya.xml:
lalu masukkan saja tata letak bilah alat di tata letak lainnya
dan Anda siap untuk pergi.
Semoga ini bisa membantu orang lain sehingga Anda tidak perlu menghabiskan banyak waktu untuk ini seperti saya.
(jika ada yang bisa mengetahui bagaimana membuat ini bekerja hanya dengan menggunakan tema, yaitu tidak harus menerapkan tema secara eksplisit dalam file tata letak, saya akan dengan senang hati mendukung jawaban mereka)
EDIT:
Jadi tampaknya memposting jawaban yang lebih lengkap adalah magnet downvote jadi saya akan menerima jawaban tidak lengkap di atas tetapi tinggalkan jawaban ini di sini jika seseorang benar-benar membutuhkannya. Jangan ragu untuk terus downvoting jika itu membuat Anda bahagia.
sumber
<item name="colorPrimary">@color/colorPrimary</item>
Maka saya bebas menggunakanandroid:background="?attr/colorPrimary"
atribut di widget Toolbar saya.@android:color/transparent
Anda menghindari masalah ketika Anda menekan lama / klik pada item menu ada kotak di sekitar teks. Ini juga membuktikan masa depan jika warna latar belakang cahaya berubah di masa depan.Cara terbersih yang saya temukan untuk melakukan ini adalah membuat anak ' ThemeOverlay.AppCompat.Dark.ActionBar '. Dalam contoh, saya mengatur warna latar belakang Toolbar menjadi MERAH dan warna teks menjadi BIRU.
Anda kemudian dapat menerapkan tema Anda ke bilah alat:
sumber
Untuk menyesuaikan gaya bilah alat, pertama-tama buat gaya khusus bilah alat yang mewarisi Widget.AppCompat.Toolbar, timpa properti, lalu tambahkan ke tema aplikasi khusus seperti yang ditunjukkan di bawah ini, lihat http://www.zoftino.com/android-toolbar-tutorial untuk lebih banyak bilah alat informasi dan gaya.
sumber
Anda dapat mencobanya di bawah ini.
Dan elemen detail Anda dapat menemukannya di https://developer.android.com/reference/android/support/v7/appcompat/R.styleable.html#Toolbar
Berikut adalah beberapa lebih:
TextAppearance.Widget.AppCompat.Toolbar.Title
,TextAppearance.Widget.AppCompat.Toolbar.Subtitle
,Widget.AppCompat.Toolbar.Button.Navigation
.Semoga ini bisa membantu Anda.
sumber
Mirip dengan Arnav Rao, tetapi dengan orang tua yang berbeda:
Dengan pendekatan ini, tampilan Toolbar sepenuhnya ditentukan dalam gaya aplikasi, jadi Anda tidak perlu menempatkan gaya apa pun pada setiap toolbar.
sumber
android:toolbarStyle
API 21+ untukandroid.widget.Toolbar
.toolbarStyle
adalah AppCompat untukandroid.support.v7.widget.Toolbar
.MyToolbar
gaya tidak harus memperluasWidget.AppCompat.Toolbar
tema.