Jadi sekarang Android 5.0 dirilis saya bertanya-tanya bagaimana menerapkan ikon actionbar animasi.
Pustaka ini di sini mengimplementasikannya dengan baik bagi saya, tetapi karena pustaka appcompat v7 memilikinya, bagaimana cara mengimplementasikannya?
Pustaka mereferensikannya di themes.xml
<item name="drawerArrowStyle">@style/Widget.AppCompat.DrawerArrowToggle</item>
Di bawah gaya ini
<style name="Base.V7.Theme.AppCompat" parent="Platform.AppCompat">
MEMPERBARUI
Saya menerapkan ini menggunakan v7 DrawerToggle. Namun saya tidak bisa menatanya. Tolong bantu
Saya menemukan gaya untuk itu di v7 styles_base.xml
<style name="Base.Widget.AppCompat.DrawerArrowToggle" parent="">
<item name="color">?android:attr/textColorSecondary</item>
<item name="thickness">2dp</item>
<item name="barSize">18dp</item>
<item name="gapBetweenBars">3dp</item>
<item name="topBottomBarArrowSize">11.31dp</item>
<item name="middleBarArrowSize">16dp</item>
<item name="drawableSize">24dp</item>
<item name="spinBars">true</item>
</style>
Saya menambahkan ini ke gaya saya dan tidak berhasil. Juga ditambahkan ke attr.xml saya
<declare-styleable name="DrawerArrowToggle">
<!-- The drawing color for the bars -->
<attr name="color" format="color"/>
<!-- Whether bars should rotate or not during transition -->
<attr name="spinBars" format="boolean"/>
<!-- The total size of the drawable -->
<attr name="drawableSize" format="dimension"/>
<!-- The max gap between the bars when they are parallel to each other -->
<attr name="gapBetweenBars" format="dimension"/>
<!-- The size of the top and bottom bars when they merge to the middle bar to form an arrow -->
<attr name="topBottomBarArrowSize" format="dimension"/>
<!-- The size of the middle bar when top and bottom bars merge into middle bar to form an arrow -->
<attr name="middleBarArrowSize" format="dimension"/>
<!-- The size of the bars when they are parallel to each other -->
<attr name="barSize" format="dimension"/>
<!-- The thickness (stroke size) for the bar paint -->
<attr name="thickness" format="dimension"/>
</declare-styleable>
Tetapi macet dan mengatakan kesalahan jenis warna saat melakukannya. Apa yang saya lewatkan?
mDrawerToggle.syncState();
memperbaikinya.Cannot resolve method setSupportActionBar(android.widget.Toolbar)
. Saya juga sudah mencoba denganandroid.support.v7.toolbar
. Apakah ada yang tahu mengapa hal ini terjadi?setSupportActionBar(mToolbar);
dan juga mendefinisikan<item name="spinBars">true</item>
tetapi animasi tidak berfungsiJika Anda menggunakan Library Dukungan yang disediakan DrawerLayout seperti yang disarankan dalam pelatihan Membuat panel navigasi , Anda bisa menggunakan android.support yang baru ditambahkan . v7 .app.ActionBarDrawerToggle (catatan: berbeda dari android.support. v4 .app.ActionBarDrawerToggle yang sekarang tidak digunakan lagi ):
Meskipun pelatihan belum diperbarui untuk memperhitungkan deprecation / new class, Anda harus dapat menggunakannya dengan kode yang hampir persis sama - satu-satunya perbedaan dalam mengimplementasikannya adalah konstruktornya.
sumber
ActionBarDrawerToggle
. The jawaban kanonik dari pembuat appcompat memiliki contoh lengkap bagaimana XML Anda harus terstruktur.Saya membuat aplikasi kecil yang memiliki fungsi serupa
Aktifitas utama
XML saya tentang Aktivitas itu
XML Toolbar Kustom saya
Gaya Tema Saya
Gaya saya di values-v21
sumber
Untuk menjawab bagian terbaru dari pertanyaan Anda: untuk mengatur gaya ikon / panah laci, Anda memiliki dua opsi:
Style pada panah itu sendiri
Untuk melakukan ini, ganti
drawerArrowStyle
tema Anda seperti ini:Ini mungkin bukan yang Anda inginkan , karena ActionBar itu sendiri harus memiliki gaya yang konsisten dengan panah, jadi, kemungkinan besar, Anda menginginkan opsi dua:
Buat tema ActionBar / Toolbar
Ganti atribut
android:actionBarTheme
(actionBarTheme
untuk appcompat) dari tema aplikasi global dengan tema Anda sendiri (yang mungkin harus Anda perolehThemeOverlay.Material.ActionBar/ThemeOverlay.AppCompat.ActionBar
) seperti ini:Catatan penting di sini adalah bahwa saat menggunakan tata letak khusus dengan
Toolbar
alih - alih penerapan ActionBar stok (misalnya jika Anda menggunakanDrawerLayout
-NavigationView
-Toolbar
combo untuk mencapai efek laci bergaya Material yang terlihat di bawah statusbar tembus),actionBarTheme
atributnya jelas tidak diambil secara otomatis (karena itu dimaksudkan untuk diurus olehAppCompatActivity
defaultActionBar
), jadi untuk kebiasaan AndaToolbar
jangan lupa untuk menerapkan tema Anda secara manual:- ini akan menyelesaikan baik default AppCompat
ThemeOverlay.AppCompat.ActionBar
atau penggantian Anda jika Anda menyetel atribut dalam tema turunan Anda.PS sedikit komentar tentang
drawerArrowStyle
override danspinBars
atribut - yang disarankan oleh banyak sumber harus diaturtrue
untuk mendapatkan animasi laci / panah. Masalahnya,spinBars
initrue
secara default di AppCompat (lihatBase.Widget.AppCompat.DrawerArrowToggle.Common
gayanya), Anda tidak perlu menimpaactionBarTheme
sama sekali agar animasi berfungsi. Anda mendapatkan animasi bahkan jika Anda menimpanya dan menyetel atributnya kefalse
, itu hanya animasi yang berbeda, kurang berputar-putar. Hal yang penting di sini adalah menggunakannyaActionBarDrawerToggle
, itulah yang menarik drawable animasi yang mewah.sumber
Saya ingin mengoreksi sedikit kode di atas
dan semua hal lainnya akan tetap sama ...
Bagi mereka yang mengalami masalah
Drawerlayout
overlay toolbartambahkan
android:layout_marginTop="?attr/actionBarSize"
ke tata letak root konten lacisumber
getSupportActionBar()
saat Anda hanya memperpanjangActivity
?ActionBarActivity