Apakah ada cara untuk mengatur textStyle
atribut secara TextView
terprogram? Tampaknya tidak ada setTextStyle()
metode.
Untuk lebih jelasnya, saya tidak berbicara tentang gaya Tampilan / Widget! Saya berbicara tentang hal berikut:
<TextView
android:id="@+id/my_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World"
android:textStyle="bold" />
Jawaban:
setTypeface adalah Atribut textStyle.
Seperti yang ditambahkan Shankar V , untuk mempertahankan atribut typeface yang telah ditetapkan sebelumnya, Anda dapat menggunakan:
sumber
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
textview.getTypeface().getStyle()
iniandroid:textStyle
Katakanlah Anda memiliki gaya yang disebut RedHUGEText pada nilai / styles.xml Anda:
Cukup buat TextView Anda seperti biasa di file XML layout / your_layout.xml, misalkan:
Dan dalam kode java dari Aktivitas Anda, Anda melakukan ini:
Itu berhasil untuk saya! Dan itu menerapkan warna, ukuran, gravitasi, dll. Saya telah menggunakannya di handset dan tablet dengan Tingkat API Android dari 8 hingga 17 tanpa masalah. Perhatikan bahwa pada Android 23, metode itu sudah tidak digunakan lagi. Argumen konteks telah dihapus, sehingga baris terakhir harus:
Ingat ... ini berguna hanya jika gaya teks benar-benar tergantung pada kondisi pada logika Java Anda atau Anda sedang membangun UI "on the fly" dengan kode ... jika tidak, lebih baik hanya melakukan:
Anda selalu bisa mendapatkannya dengan cara Anda!
sumber
<style>
tag. Itu yang umum (ukuran, warna, gaya), tetapi tidak berlaku untuk orang lain (termasuk padding, latar belakang, gravitasi, dll)Cari
setTextAppearance
atau jugasetTextTypeface
. Ada pertanyaan serupa tentang stackoverflow: Bagaimana mengubah gaya TextView saat runtimesumber
Begitu banyak cara untuk mencapai tugas ini beberapa di bawah ini: -
1.
2.
3.
4.
atau jika Anda ingin melalui xml
sumber
•
Kotlin Version
Untuk mempertahankan font saat ini selain gaya teks:
sumber
Pertanyaan ini ditanyakan di banyak tempat dengan banyak cara berbeda. Saya awalnya menjawabnya di sini tetapi saya merasa itu relevan di utas ini juga (karena saya berakhir di sini ketika saya sedang mencari jawaban).
Tidak ada solusi satu baris untuk masalah ini, tetapi ini berfungsi untuk kasus penggunaan saya. Masalahnya adalah, konstruktor 'Tampilan (konteks, attrs, defStyle)' tidak merujuk ke gaya aktual, ia menginginkan atribut. Jadi, kami akan:
Di 'res / values / attrs.xml', tentukan atribut baru:
Dalam res / values / styles.xml 'Saya akan membuat style yang ingin saya gunakan pada TextView kustom saya
Dalam 'res / values / themes.xml' atau 'res / values / styles.xml', modifikasi tema untuk aplikasi / aktivitas Anda dan tambahkan gaya berikut:
Terakhir, di TextView kustom Anda, sekarang Anda dapat menggunakan konstruktor dengan atribut dan itu akan menerima gaya Anda
Perlu dicatat bahwa saya berulang kali menggunakan customTextView di berbagai varian dan tempat yang berbeda, tetapi sama sekali tidak diperlukan bahwa nama tampilan cocok dengan gaya atau atribut atau apa pun. Selain itu, teknik ini harus bekerja dengan tampilan kustom apa pun, bukan hanya TextViews.
sumber
Ini berhasil untuk saya
atau
sumber
Saya sudah mengatasinya dengan dua metode sederhana.
Ikuti penjelasannya.
Deklarasi gaya saya yang ada:
Kode Java Android saya:
Salam.
sumber
Anda dapat mencoba yang ini
sumber
Karena
setTextAppearance(resId)
hanya tersedia untuk API 23 dan di atasnya, gunakan:TextViewCompat.setTextAppearance(textViewGoesHere, resId)
Metode ini diterapkan secara internal sebagai berikut:
sumber
Seperti yang disebutkan di sini , fitur ini saat ini tidak didukung.
sumber