Saya setuju bahwa ini tidak sepenuhnya didukung, tetapi inilah yang saya lakukan. Anda dapat menggunakan tampilan khusus untuk bilah tindakan Anda (ini akan menampilkan antara ikon Anda dan item tindakan Anda). Saya menggunakan tampilan khusus dan judul asli saya dinonaktifkan. Semua aktivitas saya mewarisi dari satu aktivitas, yang memiliki kode ini di onCreate:
this.getActionBar().setDisplayShowCustomEnabled(true);
this.getActionBar().setDisplayShowTitleEnabled(false);
LayoutInflater inflator = LayoutInflater.from(this);
View v = inflator.inflate(R.layout.titleview, null);
//if you need to customize anything else about the text, do it here.
//I'm using a custom TextView with a custom font in my layout xml so all I need to do is set title
((TextView)v.findViewById(R.id.title)).setText(this.getTitle());
//assign the view to the actionbar
this.getActionBar().setCustomView(v);
Dan tata letak saya xml (R.layout.titleview dalam kode di atas) terlihat seperti ini:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent" >
<com.your.package.CustomTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:textSize="20dp"
android:maxLines="1"
android:ellipsize="end"
android:text="" />
</RelativeLayout>
Anda dapat melakukan ini menggunakan
TypefaceSpan
kelas khusus . Ini lebih unggul daripadacustomView
pendekatan yang ditunjukkan di atas karena tidak rusak ketika menggunakan elemen Action Bar lainnya seperti memperluas tampilan aksi.Penggunaan kelas semacam itu akan terlihat seperti ini:
Kelas khusus
TypefaceSpan
diteruskan konteks Aktivitas Anda dan nama jenis huruf dalamassets/fonts
direktori Anda . Itu memuat file dan cacheTypeface
contoh baru dalam memori. Implementasi lengkapnyaTypefaceSpan
sangat sederhana:Cukup salin kelas di atas ke proyek Anda dan terapkan dalam
onCreate
metode aktivitas Anda seperti yang ditunjukkan di atas.sumber
textAllCaps
atribut disetel ke true pada TextView yang mendasarinya (misalnya melalui tema), maka font khusus tidak akan muncul. Ini merupakan masalah bagi saya ketika saya menerapkan teknik ini ke item tab bilah tindakan.assets/fonts/
. Jika Anda hanya membuang file .ttf / .otf bawah aset dan tidak dalam subfolder, Anda harus memodifikasi baris kode berikut sesuai:String.format("fonts/%s", typefaceName)
. Saya kehilangan 10 menit untuk memecahkannya. Jika tidak, Anda akan mendapatkanjava.lang.RuntimeException: Unable to start activity ComponentInfo{com.your.pckage}: java.lang.RuntimeException: native typeface cannot be made
sumber
Dari Android Support Library v26 + Android Studio 3.0 dan seterusnya, proses ini menjadi semudah film !!
Ikuti langkah-langkah ini untuk mengubah font Judul Toolbar:
res > font
sesuai dengan Font dalam XMLDi
res > values > styles
, rekatkan yang berikut ( gunakan imajinasi Anda di sini! )Masukkan baris baru di properti Bilah Alat Anda
app:titleTextAppearance="@style/TextAppearance.TabsFont"
seperti yang ditunjukkan di bawah iniNikmati styling font Judul Actionbar Kustom !!
sumber
The Kaligrafi perpustakaan membiarkan kau menetapkan font khusus melalui tema app, yang juga akan berlaku untuk bar tindakan.
Yang diperlukan untuk mengaktifkan Kaligrafi adalah melampirkannya ke konteks Aktivitas Anda:
Atribut khusus default adalah
fontPath
, tetapi Anda dapat memberikan atribut khusus Anda sendiri untuk jalur dengan menginisialisasi di kelas Aplikasi AndaCalligraphyConfig.Builder
. Penggunaanandroid:fontFamily
telah tidak disarankan.sumber
Ini peretasan yang buruk, tetapi Anda bisa melakukannya seperti ini (karena action_bar_title disembunyikan):
Kode ini untuk perangkat post-GINGERBREAD tetapi ini dapat dengan mudah diperluas untuk bekerja dengan Sherlock actionbar juga
PS Berdasarkan komentar @pjv ada cara yang lebih baik untuk menemukan id judul bar tindakan
sumber
Kode berikut akan berfungsi untuk semua versi. Saya sudah memeriksa ini di perangkat dengan roti jahe serta pada perangkat JellyBean
sumber
gunakan bilah alat baru di pustaka dukungan rancang bilah tindakan Anda sebagai milik Anda atau gunakan kode di bawah ini
Menggembungkan Textview bukan pilihan yang baik untuk mencoba pembuat String Spannable
salin di bawah kelas
sumber
sumber
typeface.ITALIC
denganTypeface.ITALIC
tidak memiliki peringatan anggota statisJika Anda ingin mengatur jenis huruf untuk semua TextViews di seluruh Kegiatan Anda dapat menggunakan sesuatu seperti ini:
Dan TypefaceCache:
sumber
Saya baru saja melakukan yang berikut di dalam fungsi onCreate ():
Saya menggunakan Perpustakaan Dukungan, jika Anda tidak menggunakannya saya kira Anda harus beralih ke getActionBar () alih-alih getSupportActionBar ().
Di Android Studio 3 Anda dapat menambahkan font khusus mengikuti petunjuk ini https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html dan kemudian gunakan font yang baru ditambahkan di " font_to_be_used "
sumber
Untuk menambahkan jawaban @ Sam_D, saya harus melakukan ini agar berfungsi:
Sepertinya berlebihan - merujuk v.findViewById (R.id.title)) dua kali - tapi hanya itu satu-satunya cara yang memungkinkan saya melakukannya.
sumber
Untuk memperbarui jawaban yang benar.
pertama: atur judul menjadi false, karena kami menggunakan tampilan khusus
kedua: buat titleview.xml
Akhirnya :
UNDUH FILE FONT: karena saya menyimpan file ke cloudinary jadi saya punya tautan untuk mengunduhnya.
sumber
Tidak diperlukan tampilan teks khusus!
Pertama, nonaktifkan judul di toobar dalam kode java Anda: getSupportActionBar (). SetDisplayShowTitleEnabled (false);
Kemudian, cukup tambahkan TextView di dalam toolbar:
sumber
Coba gunakan ini
sumber
Kita perlu menggunakan refleksi untuk mencapai ini
sumber
COBA INI
sumber