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.

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)

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);

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"

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).


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


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

11

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

android:textStyle="bold"

10
TextView text = (TextView)findViewById(R.layout.textName);
text.setTypeface(null,Typeface.BOLD);

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.


10

coba ini untuk mengatur TextView gaya Anda dengan kode java

txt1.setTypeface(null,Typeface.BOLD_ITALIC);


7

Coba ini:

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

6

Coba ini:

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

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" />

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); 

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)

3

Anda dapat mencoba seperti ini:

<string name="title"><u><b><i>Your Text</i></b></u></string>

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));

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 ...


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);

2

Dalam hal ini:

1 - set teks

2 - set jenis huruf

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

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.


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));

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" />

0
AppCompatTextView text =(AppCompatTextView)findViewById(R.layout.appCompatTextView1);
text.setTypeface(null,Typeface.BOLD);

Gunakan metode di atas untuk mengatur jenis huruf secara terprogram.


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


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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.