Cara mengatur TextView textStyle seperti tebal, miring

843

Bagaimana mengatur TextViewgaya (tebal atau miring) di dalam Java dan tanpa menggunakan tata letak XML?

Dengan kata lain, saya perlu menulis android:textStyledengan Java.

Hanya aku
sumber

Jawaban:

1885
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);

Untuk mempertahankan jenis huruf sebelumnya

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
Tanmay Mandal
sumber
5
Untuk menghapus gaya dapat digunakan Typeface.NORMAL
Brais Gabin
351
Jika Anda melakukannya, Anda akan kehilangan jenis huruf apa pun sebelumnya. Untuk mempertahankan yang sebelumnya, lakukan sesuatu seperti textView.setTypeface (textView.getTypeface (), Typeface.BOLD_ITALIC);
leocadiotine
34
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);tidak akan menghapus gaya tebal atau miring dari a TextView. Anda harus menggunakannya textView.setTypeface(null, Typeface.NORMAL);untuk itu.
Jarett Millard
58
Untuk mempertahankan jenis huruf sebelumnya tetapi untuk menghilangkan gaya tebal atau miring, gunakan kode berikut:textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
Shnkc
6
Terima kasih @Shnkc, Anda mengarahkan saya ke arah yang benar. Sebenarnya Anda hanya perlu: textView.setTypeface (Typeface.create (textView.getTypeface (), Typeface.NORMAL));
PedroHidalgo
271

Coba ini TextViewuntuk mengaktifkan untuk cetak tebal atau miring

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Niranj Patel
sumber
14
Secara kebetulan, jika Anda ingin menghapus gaya jenis huruf yang ada, Anda harus melakukan sesuatu yang berbeda, misalnya:tv.setTypeface(Typeface.create(tv.getTypeface(), Typeface.NORMAL));
greg7gkb
@ greg7gkb tidakkah ini tv.setTypeface(null, Typeface.BOLD);akan melakukan hal yang sama (menghapus gaya jenis huruf yang ada)?
Prab
Melewati nol ke setTypeface () berarti bahwa TextView menggunakan default hard-coded yang mungkin berbeda dari Typeface yang ditetapkan sebelumnya.
greg7gkb
142

Secara terprogram:

Anda dapat melakukannya secara terprogram menggunakan setTypeface():

textView.setTypeface(null, Typeface.NORMAL);      // for Normal Text
textView.setTypeface(null, Typeface.BOLD);        // for Bold only
textView.setTypeface(null, Typeface.ITALIC);      // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic

XML:

Anda dapat mengatur secara langsung dalam file XML <TextView />seperti:

android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Pratik Butani
sumber
11
Penanya bertanya bagaimana melakukannya tanpa menggunakan tata letak XML.
JulianSymes
6
Periksa Pertanyaan with in Java and without using XMLNgomong-ngomong Ini juga akan membantu orang lain.
Pratik Butani
5
Iya. Saya datang ke sini melalui Google dan itu hanya membantu saya. Terima kasih :)
Atul
96

Anda memiliki dua opsi:

Opsi 1 (hanya berfungsi untuk huruf tebal, miring, dan garis bawah):

String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(Html.fromHtml(s));

Pilihan 2:

Gunakan Spannable ; ini lebih rumit, tetapi Anda dapat secara dinamis mengubah atribut teks (tidak hanya tebal / miring, juga warna).

Gabriel Negut
sumber
6
Dengan typeFaceAnda dapat mengatur satu gaya untuk seluruh teks.
Gabriel Negut
2
ketika saya mencoba di baris kustom saya tidak mengerti mengapa? String s1 = "<b> Anda di: </b>"; holder.address = (TextView) convertView.findViewById (R.id.address_text_view); holder.address.setText (Html.fromHtml (s1) + track.getAddress ());
Shylendra Madda
2
Metode ini adalah penataan teks sebagian yang bagus. Seperti kutipan di dalam tampilan teks besar.
Salih Erikci
1
Metode pertama tidak berfungsi dalam kasus pribadi saya, createTextView (judul String, String text) {textView = new TextView (this); textView.setTextSize (17); textView.setText (Html.fromHtml ("<b>" + title + "</b>") + ":" + teks); }
garenyondem
1
Opsi spannable dan fromHTML dapat memperlambat pengetikan / setText jika teksnya besar karena perhitungan ulang tata letak. Hindari jika Anda memiliki metode lain yang tersedia.
Eugene Kartoyev
43

Secara terprogram:

Anda dapat melakukan setTypeface()metode menggunakan metode:

Di bawah ini adalah kode untuk Typeface default

textView.setTypeface(null, Typeface.NORMAL);      // for Normal Text
textView.setTypeface(null, Typeface.BOLD);        // for Bold only
textView.setTypeface(null, Typeface.ITALIC);      // for Italic
textView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic

dan jika Anda ingin mengatur Typeface khusus :

textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);      // for Normal Text
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);        // for Bold only
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);      // for Italic
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC); // for Bold and Italic

XML:

Anda dapat mengatur langsung dalam file XML <TextView />seperti ini:

android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"

Atau Anda dapat mengatur font favorit Anda (dari aset). untuk info lebih lanjut lihat tautan

akshay
sumber
14
TextView text = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);

sekarang atur textviewpropertinya ..

text.setTypeface(null, Typeface.BOLD);  //-- for only bold the text
text.setTypeface(null, Typeface.BOLD_ITALIC);  //-- for  bold & italic the text
text.setTypeface(null, Typeface.ITALIC);  // -- for  italic the text
Akash Thakkar
sumber
11

Cukup jika Anda ingin membuat teks tebal . tulis baris ini di tata letak Anda di properti tampilan teks

android:textStyle="bold"
Charu ක
sumber
10
TextView text = (TextView)findViewById(R.layout.textName);
text.setTypeface(null,Typeface.BOLD);
Khushi
sumber
10

Itu akan

yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);

dan italic harus bisa diganti Typeface.DEFAULT_BOLDdengan Typeface.DEFAULT_ITALC.

Beri tahu saya cara kerjanya.

DustinRiley
sumber
10

coba ini untuk mengatur TextView gaya Anda dengan kode java

txt1.setTypeface(null,Typeface.BOLD_ITALIC);
Nikhil
sumber
7

Coba ini:

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
mohamad sheikhi
sumber
6

Coba ini:

TextView textview = (TextView)findViewById(R.id.textview_idname);
textview.setTypeface(null,Typeface.BOLD);
Bayangan hitam
sumber
4

Cara standar untuk melakukan ini adalah dengan menggunakan gaya kustom. Ex-

Di styles.xmltambahkan berikut ini.

<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyApp.TextAppearance.LoginText">
    <item name="android:textStyle">bold|italic</item>
</style>

Terapkan gaya ini ke Anda TextViewsebagai berikut.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/MyApp.TextAppearance.LoginText" />
Shivanand Darur
sumber
4

Salah satu cara yang dapat Anda lakukan adalah:

myTextView.setTypeface(null, Typeface.ITALIC);
myTextView.setTypeface(null, Typeface.BOLD_ITALIC);
myTextView.setTypeface(null, Typeface.BOLD);
myTextView.setTypeface(null, Typeface.NORMAL);

Opsi lain jika Anda ingin mempertahankan jenis huruf sebelumnya dan tidak ingin kehilangan sebelumnya diterapkan:

myTextView.setTypeface(textView.getTypeface(), Typeface.NORMAL);      
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD);        
myTextView.setTypeface(textView.getTypeface(), Typeface.ITALIC);      
myTextView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC); 
param
sumber
4
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);

Untuk mempertahankan jenis huruf sebelumnya

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
Amirhf
sumber
3

Anda dapat mencoba seperti ini:

<string name="title"><u><b><i>Your Text</i></b></u></string>
Vishal Vaishnav
sumber
3

Cara termudah yang dapat Anda lakukan berdasarkan kriteria pemilihan gaya adalah:

String pre = "", post = "";

if(isBold){
    pre += "<b>"; post += "</b>";
}
if(isItalic){
    pre += "<i>"; post += "</i>";
}
if(isUnderline){
    pre += "<u>"; post += "</u>";
}

textView.setText(Html.fromHtml(pre + editText.getText().toString()+ post));
// you can also use it with EidtText
editText.setText(Html.fromHtml(pre + editText.getText().toString()+ post));
muzamil
sumber
2

Karena saya ingin menggunakan font khusus, hanya beberapa kata yang cocok untuk saya. Jelas pengaturan di layout.xmlsuka saya android:textStlyle="italic"diabaikan oleh AOS. Jadi akhirnya saya harus melakukan sebagai berikut: dalam strings.xmlstring target dinyatakan sebagai:

<string name="txt_sign"><i>The information blah blah ...</i></string>

kemudian tambahan dalam kode:

TextView textSign = (TextView) findViewById(R.id.txt_sign);
FontHelper.setSomeCustomFont(textSign);
textSign.setTypeface(textSign.getTypeface(), Typeface.ITALIC);

Saya tidak mencoba Spannableopsi (yang saya anggap HARUS berhasil) tetapi

textSign.setText(Html.fromHtml(getString(R.string.txt_sign))) 

tidak berpengaruh. Juga jika saya menghapus italic tagdari strings.xmlmeninggalkan setTypeface()sendirian tidak memiliki efek baik. Android yang rumit ...

Stan
sumber
2

Dan seperti yang dijelaskan di sini Android Developers String Resources jika Anda perlu menggunakan parameter dalam sumber daya teks gaya Anda, Anda harus menghindari kurung pembuka

<resources>
<string name="welcome_messages">Hello, %1$s! You have &lt;b>%2$d new messages&lt;/b>.</string>
</resources>

dan panggil formatHtml (string)

Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);
Angelo Nodari
sumber
2

Dalam hal ini:

1 - set teks

2 - set jenis huruf

holder.title.setText(item.nome);
holder.title.setTypeface(null, Typeface.BOLD);
FlipNovid
sumber
1

Ini adalah satu-satunya hal yang berfungsi untuk saya pada OnePlus 5T yang dikonfigurasi dengan font OnePlus Slate ™:

textView.setTypeface(Typeface.create(textView.getTypeface(), useBold ? Typeface.BOLD : Typeface.NORMAL));

Metode lain akan membuatnya kembali ke Roboto ketika BOLD atau NORMAL.

droid256
sumber
1

Saat menggunakan tag yang disederhanakan dengan AndroidX pertimbangkan untuk menggunakan HtmlCompat.fromHtml ()

String s = "<b>Bolded text</b>, <i>italic text</i>, even <u>underlined</u>!"    
TextView tv = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
tv.setText(HtmlCompat.fromHtml(s, FROM_HTML_MODE_LEGACY));
aleksandrbel
sumber
0

Cara terbaik adalah mendefinisikannya styles.xml

<style name="common_txt_style_heading" parent="android:style/Widget.TextView">
        <item name="android:textSize">@dimen/common_txtsize_heading</item>
        <item name="android:textColor">@color/color_black</item>
        <item name="android:textStyle">bold|italic</item>
</style>

Dan perbarui TextView

  <TextView
     android:id="@+id/txt_userprofile"
     style="@style/common_txt_style_heading"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_centerHorizontal="true"
     android:layout_marginTop="@dimen/margin_small"
     android:text="@string/some_heading" />
Faheem
sumber
0
AppCompatTextView text =(AppCompatTextView)findViewById(R.layout.appCompatTextView1);
text.setTypeface(null,Typeface.BOLD);

Gunakan metode di atas untuk mengatur jenis huruf secara terprogram.

Tulsi
sumber
0

1) Anda dapat mengaturnya dengan TypeFace. 2) Anda dapat langsung menggunakan dalam strings.xml (dalam folder nilai Anda) 3) Anda dapat String myNewString = "Ini adalah teks tebal saya Ini adalah huruf miring saya Ini adalah string yang saya garisbawahi

Ujjwal Bassi
sumber
0

Anda dapat mengatur jenis huruf yang berbeda menggunakan contoh yang diberikan di bawah ini -

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);

Atau jika Anda ingin mengatur font yang berbeda dan jenis hurufnya. Tambahkan ke aset atau folder mentah, lalu gunakan seperti

  Typeface face= Typeface.createFromAsset(getAssets(), "font/font.ttf");
  tv1.setTypeface(face);

  Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");
  tv2.setTypeface(face1);
Ravi
sumber