Saya mencoba menggunakan kode berikut untuk memusatkan teks di ActionBar
, tetapi itu menyelaraskan dirinya ke kiri.
Bagaimana Anda membuatnya muncul di tengah?
ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle("Canteen Home");
actionBar.setHomeButtonEnabled(true);
actionBar.setIcon(R.drawable.back);
android
android-actionbar
android-theme
Sourabh Saldi
sumber
sumber
Jawaban:
Untuk memiliki judul yang berpusat di ABS (jika Anda ingin memiliki ini secara default
ActionBar
, cukup hapus "dukungan" di nama metode), Anda dapat melakukan ini:Dalam Aktivitas Anda, dalam
onCreate()
metode Anda :abs_layout
:Sekarang Anda harus memiliki
Actionbar
hanya dengan satu judul. Jika Anda ingin menyetel latar belakang khusus, setel di Tata Letak di atas (tapi jangan lupa untuk menyetelnyaandroid:layout_height="match_parent"
).atau dengan:
sumber
android:layout_gravity="center"
ke LinearLayout.((TextView)actionBar.getCustomView().findViewById(R.id.textView1)).setText("new title");
, di mana textView1 adalahTextView
ID Anda di CustomView.Saya belum banyak berhasil dengan jawaban lain ... di bawah ini persis seperti yang berhasil untuk saya di Android 4.4.3 menggunakan ActionBar di pustaka dukungan v7. Saya sudah menyiapkannya untuk menampilkan ikon panel samping navigasi ("tombol menu burger")
XML
Jawa
sumber
params
objek ?? Bisakah kita tidak menentukan gravitasi di file tata letak eksternal yang kita tetapkan ke ActionBar.Tentukan tampilan kustom Anda sendiri dengan teks judul, lalu teruskan LayoutParams ke setCustomView (), seperti yang dikatakan Sergii.
DIEDIT : Setidaknya untuk lebar, Anda harus menggunakan WRAP_CONTENT atau panel samping navigasi, ikon aplikasi, dll. TIDAK AKAN DITAMPILKAN (tampilan kustom ditampilkan di atas tampilan lain di bilah tindakan). Ini akan terjadi terutama jika tidak ada tombol tindakan yang ditampilkan.
DIEDIT : Setara dengan tata letak xml:
Ini tidak memerlukan LayoutParams untuk ditentukan.
sumber
Sekadar tambahan singkat dari jawaban Ahmad. Anda tidak dapat menggunakan getSupportActionBar (). SetTitle lagi saat menggunakan tampilan kustom dengan TextView. Jadi untuk menyetel judul saat Anda memiliki beberapa Aktivitas dengan ActionBar kustom ini (menggunakan yang satu ini xml), dalam metode onCreate () Anda setelah Anda menetapkan tampilan kustom:
sumber
BAIK. Setelah banyak penelitian, dikombinasikan dengan jawaban yang diterima di atas, saya telah menemukan solusi yang juga berfungsi jika Anda memiliki hal lain di bilah tindakan Anda (tombol kembali / beranda, tombol menu). Jadi pada dasarnya saya telah meletakkan metode override dalam aktivitas dasar (yang diperluas oleh semua aktivitas lainnya), dan menempatkan kode di sana. Kode ini menetapkan judul setiap aktivitas seperti yang disediakan di AndroidManifest.xml, dan juga melakukan beberapa hal khusus lainnya (seperti menyetel warna khusus pada tombol bilah tindakan, dan font khusus pada judul). Anda hanya perlu menghilangkan gravitasi di action_bar.xml, dan menggunakan padding sebagai gantinya.
actionBar != null
cek digunakan, karena tidak semua aktivitas saya memilikinya.Diuji pada 4.4.2 dan 5.0.1
Dan action_bar.xml saya seperti ini (jika ada yang tertarik):
EDIT : Jika Anda perlu mengubah judul menjadi sesuatu yang lain SETELAH aktivitas dimuat (onCreateOptionsMenu sudah dipanggil), letakkan TextView lain di action_bar.xml Anda dan gunakan kode berikut untuk "mengisi" TextView baru ini, setel teks dan tampilkan Itu:
EDIT (25.08.2016) : Ini tidak berfungsi dengan revisi appcompat 24.2.0 (Agustus 2016), jika aktivitas Anda memiliki "tombol kembali". Saya mengajukan laporan bug ( Masalah 220899 ), tetapi saya tidak tahu apakah ada gunanya (ragu ini akan diperbaiki dalam waktu dekat). Sementara itu solusinya adalah memeriksa apakah kelas anak sama dengan AppCompatImageButton.class dan melakukan hal yang sama, hanya menambah lebar sebesar 30% (misalnya appCompatImageButton.getWidth () * 1.3 sebelum mengurangi nilai ini dari padding asli):
Sementara itu, saya melakukan beberapa pemeriksaan padding / margin di sana:
sumber
tanpa customview, ia dapat memusatkan judul bilah tindakan. ini berfungsi sempurna untuk laci navigasi juga
Selamat membuat kode. Terima kasih.
sumber
Setelah banyak penelitian: Ini benar-benar berfungsi:
Anda harus menentukan tata letak custom_actionbar.xml yang sesuai dengan kebutuhan Anda, misalnya:
sumber
Ini bekerja dengan baik.
Di bawah tata letak custom_actionbar:
sumber
Anda perlu mengatur
ActionBar.LayoutParams.WRAP_CONTENT
danActionBar.DISPLAY_HOME_AS_UP
sumber
Cara terbaik dan termudah, khusus untuk mereka yang hanya menginginkan tampilan teks dengan pusat gravitasi tanpa tata letak xml.
sumber
Kode di sini bekerja untuk saya.
sumber
Solusi khusus Kotlin yang tidak memerlukan perubahan dalam Tata Letak XML:
sumber
Berikut adalah solusi Kotlin + androidx lengkap, yang dibangun berdasarkan jawaban dari @Stanislas Heili. Semoga bermanfaat bagi orang lain. Ini untuk kasus ketika Anda memiliki aktivitas yang menghosting beberapa fragmen, dengan hanya satu fragmen yang aktif pada waktu yang sama.
Dalam aktivitas Anda:
Dalam fragmen Anda:
sumber
Tutorial lain yang pernah saya lihat menimpa seluruh tata letak bilah tindakan yang menyembunyikan MenuItems. Saya sudah berhasil hanya dengan melakukan langkah-langkah berikut:
Buat file xml sebagai berikut:
Dan di kelas lakukan:
sumber
Untuk pengguna Kotlin:
Gunakan kode berikut dalam aktivitas Anda:
Dan XML / tata letak sumber daya:
sumber
Kode ini tidak akan menyembunyikan tombol kembali, waktu yang sama akan menyelaraskan judul di tengah.
panggil metode ini di oncreate
sumber