Saya telah melihat bilah aplikasi tinggi yang diperpanjang di pedoman Bilah Aplikasi Desain Google . Bagaimana cara menerapkan ini di Android Lollipop?
Saya telah melihat bilah aplikasi tinggi yang diperpanjang di pedoman Bilah Aplikasi Desain Google . Bagaimana cara menerapkan ini di Android Lollipop?
Jawaban:
Anda perlu menggunakan widget Toolbar baru untuk melakukannya. Toolbar memiliki penanganan khusus untuk tinggi minimumnya untuk menyatakan jumlah ruang yang digunakan untuk tombol (dan tindakan).
Dalam contoh di bawah ini, kami menyetel tinggi menjadi 128dp (yaitu 56dp + 72dp seperti yang ditentukan dalam spesifikasi), tetapi tetap android:minHeight
menggunakan standar actionBarSize
(yang biasanya 56dp). Ini berarti bahwa tombol dan tindakan dibatasi untuk diposisikan secara vertikal di 56dp teratas. Kami kemudian dapat menggunakan android:gravity
untuk memposisikan judul di bagian bawah.
<Toolbar
android:id="@+id/toolbar"
android:layout_height="128dp"
android:layout_width="match_parent"
android:minHeight="?android:attr/actionBarSize"
android:background="?android:attr/colorPrimary"
android:gravity="bottom" />
Jika Anda menggunakan AppCompat, ubah deklarasi menjadi digunakan android.support.v7.widget.Toolbar
dan gunakan atributnya.
@dimen/action_bar_size_x2
, ukur bilah tindakan menggunakan peningkatan, misalnya , dan gunakan 112dp pada ponsel, 128dp pada tablet
android:paddingBottom
memperkenalkan spasi aneh saat buttonGravity
disetel ke bottom
. The titleMarginBottom
atribut tampaknya seperti pilihan yang lebih baik di sini, tidak?
Terima kasih atas pertanyaan Anda, jawabannya, dan terlebih lagi untuk implementasi toolbar di native dan perpustakaan dukungan :)
Dan kita bisa bermain lebih banyak. Kita bisa, saat runtime, bermain dengan Height dan MinimalHeight.
Tingginya adalah tinggi ToolBar, sederhana, semua orang mengerti, dan gravitasi bekerja sesuai dengan ketinggian itu.
MinimalHeight lebih rumit dan tidak boleh minimal 56dp. MinHeight ini digunakan untuk menempatkan baris menuItem Anda. Garis ini berada di tengah minHeight Anda.
Jadi Anda dapat menambahkan kode ini ke aktivitas Anda untuk melihat sendiri perbedaannya. :)
Runnable toolBarAnimator=new Runnable() {
@Override
public void run() {
if(postICS){
// toolbar.setTranslationX(iteration);
// toolbar.setElevation(iteration);
toolbar.setMinimumHeight(iteration * 5);
toolbar.getLayoutParams().height++;
}
uiThreadHanlder.postDelayed(this,16);
iteration++;
if(iteration>150)iteration=0;
}
};
Handler uiThreadHanlder=new Handler();
int iteration=0;
@Override
protected void onResume() {
super.onResume();
//launch the animation
uiThreadHanlder.postDelayed(toolBarAnimator, 1000);
}
@Override
protected void onPause() {
super.onPause();
//stop the animation
uiThreadHanlder.removeCallbacks(toolBarAnimator);
}
Dimana toolbar berada:
toolbar = (Toolbar) findViewById (R.id.toolbar);
Saat melakukan ini, Anda memperoleh:
tetapi jika Anda meninggalkan animasi terus Anda mendapatkan:
Inilah alasannya, menyetel bilah alat android: layout_height ke wrap_content adalah opsi yang bagus di sebagian besar kasus, karena Bilah Alat akan menyesuaikan tingginya sesuai dengan isinya (dan Anda dapat mengubah konten saat runtime :)
Dan ini juga cara Anda mengubah ukuran toolbar saat runtime.
Terima kasih Chris Banes untuk pekerjaan luar biasa yang Anda lakukan di bilah tindakan.
boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
layout_height
adalah cara yang harus ditempuh, saya berharap solusi yang dijelaskan oleh musim hujan di sini juga bukan solusi, tetapi cara yang tepat untuk melakukannya? code.google.com/p/android/issues/detail?id=77874