Saya memiliki file font ttf di folder aset saya. Saya tahu cara menggunakannya untuk tampilan teks dengan:
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
textview1.setTypeface(externalFont);
Saya telah mendefinisikan pencarian teks spinner saya di file xml itu sendiri (seperti biasa di android):
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:textColor="#ffffff"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee" />
Saya tidak bisa mereferensikan textview ini dari kode, saya selalu mendapatkan pengecualian pointer nol. Misalnya saya mencoba:
TextView spinner_text=(TextView)findViewById(R.id.text1);
spinner_text.setTypeface(externalFont);
Apakah mungkin untuk memilih font eksternal saya bahkan untuk teks spinner saya yang ditentukan dalam xml itu sendiri?
Terima kasih.
EDIT dengan jawaban:
Ini bekerja:
String [] items = new String[2];
items[0]="Something1";
items[1]="Something2";
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.spinaca, items) {
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
((TextView) v).setTypeface(externalFont);
return v;
}
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View v =super.getDropDownView(position, convertView, parent);
Typeface externalFont=Typeface.createFromAsset(getAssets(), "fonts/HelveticaNeueLTCom-Lt.ttf");
((TextView) v).setTypeface(externalFont);
v.setBackgroundColor(Color.GREEN);
return v;
}
};
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Mungkin perlu ditambahkan
import android.view.ViewGroup;
Ke daftar impor Anda di bagian atas file Anda. Untuk beberapa alasan Eclipse tidak membuat saran ini ketika tidak mengenali kelas ViewGroup yang terlibat dalam kode.
android
fonts
spinner
android-spinner
android-fonts
DixieFlatline
sumber
sumber
Jawaban:
Inilah yang berhasil bagi saya (menggunakan ide dari jawaban CommonsWare dan gsanllorente ):
Jika Anda, seperti saya, awalnya mengisi Spinner menggunakan
ArrayAdapter.createFromResource()
dan sumber daya array (seperti dalam dokumentasi Spinner ), maka Anda akan menggunakan MySpinnerAdapter seperti ini:sumber
assignAdapterWithOptions(Spinner spinner, int textArrayResId)
metode, mendapatkan konteks darispinner.getContext()
dan menetapkan adaptor ke pemintal di dalamnya (tata letak pemintal adalah stander untuk seluruh aplikasi saya)Anda akan menerapkan font melalui kustom Anda sendiri
SpinnerAdapter
, dalamgetView()
dangetDropDownView()
.sumber
android.view.ViewGroup
, mungkinJika Anda mengimplementasikan Adapter Anda di file lain, Anda bisa mengakses fungsi "getAssets ()" dari konstruktor Adapter, karena Anda memiliki Context sebagai parameter.
sumber
findViewById(R.id.text1)
sepertinya tidak menemukan TextView, meskipun ID-nya benar. Beberapa masalah lain dalam kode ini: 1) pernyataan return yang hilang dalamgetView()
, 2) bidang yang tidak digunakanrecurso
, 3) beberapa masalah gaya seperti penamaan variabelspinner_text
(seharusnyaspinnerText
). Inilah yang berhasil untuk saya .Coba ini buat custom_spinner.xml kustom
Buat CheckedtextView kustom seperti ini
menerapkan tata letak baru
sumber
Ini adalah kelanjutan dari jawaban saya sebelumnya: https://stackoverflow.com/a/51100507/787399
Langkah 1: nyatakan item_spinner.xml
langkah 2: nyatakan item_spinner_dropdown.xml:
Langkah 3: Gunakan spinner dalam tata letak:
[Catatan: id dari FontTextView sama di kedua tata letak, item spinner dan item drop-down]
Langkah 4: Gunakan di Activity / Fragment:
[untuk panduan lebih lanjut lihat posting saya yang lain: https://stackoverflow.com/a/51077569/787399 dan https://stackoverflow.com/a/22164007/787399 ]
sumber
Silakan ikuti kustomisasi dasar FontTextView, FontEditView, FontRadioButton, FontCheckBox dan FontButton.
[Untuk jawaban yang tepat, setelah melihat panduan ini, silakan lihat: https://stackoverflow.com/a/51113022/787399 ]
Gunakan FontTextView kustom, dalam tata letak item ArrayAdapter, seperti ini:
gunakan kode:
Jelaskan gaya dan atribut di masing-masing xml:
dan
tentukan beberapa gaya lagi:
sebutkan font di strings.xml Anda:
dan digunakan dalam tata letak menghemat beberapa kode dan waktu:
Di Android level 16 ke atas, semua ini disederhanakan, karena sekarang Anda dapat tetap menggunakan TTF dan resource font lainnya
/res/font
folder, bukan di aset. Itu menghapus sebagian besar kelas, gaya, dan atribut khusus, lihat:Sumber Daya Font di Android
Selamat Coding dengan gaya !! :-)
sumber
Guys Saya menemukan solusi yang luar biasa, saya membungkus adaptor orignal dengan pembantu seperti
Gunakan kelas ini SpinnerViewHelper dan selamat melakukan progamming dengan Android
Ekspresi lambda digunakan.
sumber