Dengan pustaka desain baru ada beberapa tata letak baru yang banyak mengubah bagaimana toolbar dapat berperilaku jika pengembang menginginkannya. Karena fragmen yang berbeda memiliki perilaku dan tujuan yang berbeda, misalnya fragmen galeri dengan toolbar yang menciut menampilkan foto penting, atau fragmen tanpa scrollview yang tidak memerlukan appbarlayout untuk menyembunyikan toolbar, memiliki satu toolbar dalam aktivitas dapat terbukti sulit.
Jadi dengan ini, haruskah saya memindahkan toolbar ke setiap fragmen? Jika demikian, saya harus menyetel supportActionBar setiap kali saya menampilkan fragmen dan juga memiliki referensi aktivitas dalam fragmen yang membatalkan sifat independen fragmen. Jika saya membiarkan bilah alat di Aktivitas sendirian, saya harus memiliki beberapa tata letak yang ditentukan untuk setiap jenis perilaku di setiap fragmen. Apa pendekatan terbaik?
sumber
Jawaban:
Bagi saya kedengarannya terlalu aneh untuk memiliki appbar dan toolbar di setiap fragmen. Jadi saya telah memilih untuk memiliki satu appbar dengan toolbar dalam aktivitas.
Untuk mengatasi masalah tersebut dengan CoordinatorLayout Anda harus menyetel perilaku berbeda dari Anda
FrameLayout
(atau Layout lainnya) yang seharusnya menyimpan fragmen dari setiap fragmen yang ingin Anda ganti perilaku defaultnya.Mari kita asumsikan, bahwa perilaku default Anda adalah
app:layout_behavior="@string/appbar_scrolling_view_behavior"
Kemudian di fragment_activity_layout.xml Anda mungkin memiliki sesuatu seperti itu:
Dan di setiap fragmen yang tidak ingin Anda implementasikan,
app:layout_behavior="@string/appbar_scrolling_view_behavior"
Anda harus menggantionAttach
danonDetach
metode yang akan mengubah perilakuFrameLayout
:Setelah itu CoordinatorLayout tidak akan menciutkan appbar, dll. Dan akan memungkinkan tata letak fragmen menjadi tinggi penuh.
sumber
onLoadFinished
, Anda mungkin ingin menampilkan gambar tengah yang memberi tahu bahwa tidak ada apa pun di sini, seperti di Aplikasi Inbox), tapi saya belum mencobanya. Mungkin nanti hari ini.enableCoordinator(Activity activity)
/disableCoordinator(Activity activity)
dari fragmen.Inilah solusi saya
sumber
Ini adalah pertanyaan yang sangat bagus: haruskah
Toolbar
yang perlu bertindak sepertiActionBar
disimpan di aActivity
atau aFragment
? Setelah mencari-cari di sekitar pertanyaan dan dokumentasi yang berbeda, saya tidak dapat menemukan solusi yang mencakup semua kasus. Oleh karena itu, itu sangat tergantung pada situasi Anda ke mana harus pergi.Kasus 1: Toolbar harus menjadi pengganti ActionBar
Jika Toolbar harus berperilaku seperti ActionBar normal (atau jika maksimal 1 fragmen ditampilkan dari waktu ke waktu), menurut saya cara terbaik / paling sederhana adalah menggunakan tradisional
Activities
dengan Toolbar sendiri dan meletakkan Fragmen Anda di sana. Dengan cara ini Anda tidak perlu khawatir tentang kapan Toolbar harus ditampilkan.Mengubah ActionBar (-behaviour) dari Fragment juga dimungkinkan, tetapi saya tidak akan merekomendasikannya, karena itu memaksa Anda untuk melacak Fragment mana yang mengubah ActionBar kapan. Saya bahkan tidak tahu apakah pengaturan ActionBar dapat dilakukan beberapa kali.
Kasus 2: Setiap Fragmen harus memiliki (bagian dari) Toolbar sendiri
Anda juga dapat memilih untuk meletakkan Bilah Alat yang berdiri sendiri di Fragmen berbeda, dengan tindakan mereka sendiri. Dengan cara ini Anda dapat menampilkan Fragmen yang berbeda di samping satu sama lain - masing-masing dengan tindakannya sendiri di Toolbar mereka - dan menyarankan bahwa itu adalah 1 Toolbar (mungkin seperti aplikasi Gmail, meskipun saya tidak yakin). Namun ini berarti Anda harus mengembangkan Toolbar itu sendiri, tetapi itu tidak terlalu sulit.
Saya harap ini akan membantu membuat pilihan.
(Maaf jika saya membuat kesalahan (bahasa-))
sumber