Kalın, italik gibi TextView textStyle nasıl ayarlanır


843

TextViewJava içinde ve XML düzenini kullanmadan stil (kalın veya italik) nasıl ayarlanır ?

Başka bir deyişle, android:textStyleJava ile yazmam gerekiyor.

Yanıtlar:


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

Önceki yazı tipini korumak için

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)

5
Stili kaldırmak için kullanılabilir Typeface.NORMAL
— Brais Gabin

351
Bunu yaparsanız, önceki yazı tiplerini kaybedersiniz. Öncekini tutmak için textView.setTypeface (textView.getTypeface (), Typeface.BOLD_ITALIC);
— leocadiotine

34
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);, kalın veya italik stili a TextView. Bunun için kullanmanız gerekecek textView.setTypeface(null, Typeface.NORMAL);.
— Jarett Millard

57
Önceki herhangi bir yazı tipini korumak, ancak kalın veya italik stilden kurtulmak için aşağıdaki kodu kullanın:textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
— Shnkc

6
Teşekkürler @Shnkc, Beni doğru yöne doğrulttun. Aslında ihtiyacınız olan şey: textView.setTypeface (Typeface.create (textView.getTypeface (), Typeface.NORMAL));
— PedroHidalgo

271

TextViewKalın veya italik olarak ayarlamak için bunu deneyin

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

14
Bu arada, mevcut bir yazı tipi stilini temizlemek istiyorsanız, farklı bir şey yapmanız gerekir, örneğin:tv.setTypeface(Typeface.create(tv.getTypeface(), Typeface.NORMAL));
— greg7gkb

@ greg7gkb tv.setTypeface(null, Typeface.BOLD);bunu yapmayacak mı (mevcut bir yazı tipi stilini temizle)?
— Prabs

Null setTypeface () öğesine iletmek, TextView uygulamasının daha önce ayarlanan Yazı Yüzünden farklı olabilecek sabit kodlanmış bir varsayılan değer kullandığı anlamına gelir.
— greg7gkb

142

Programlı:

Programlı olarak aşağıdakileri kullanarak yapabilirsiniz 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:

Doğrudan XML dosyasında aşağıdaki <TextView />gibi ayarlayabilirsiniz :

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

11
Sorgulayıcı, XML düzenini kullanmadan nasıl yapılacağını sordu.
— JulianSymes

6
Soru Kontrol with in Java and without using XMLBu arada başkalarına da yardımcı olacaktır.
— Pratik Butani

5
Evet. Buraya Google üzerinden geldim ve bana yardımcı oldu. Teşekkürler :)
— Atul

96

İki seçeneğiniz var:

Seçenek 1 (yalnızca kalın, italik ve altı çizili olarak çalışır):

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

Seçenek 2:

Spannable kullanın ; daha karmaşıktır, ancak metin niteliklerini dinamik olarak değiştirebilirsiniz (yalnızca kalın / italik değil, renkler de).


6
İle typeFacemetnin tamamı için tek bir stil ayarlayabilirsiniz.
— Gabriel Negut

2
benim özel satır denerken neden alamadım? String s1 = "<b> Bulunduğunuz yer: </b>"; holder.address = (TextView) dönüştürmekView.findViewById (R.id.address_text_view); holder.address.setText (Html.fromHtml (s1) + track.getAddress ());
— Shylendra Madda

2
Bu yöntem, harika kısmi metin stilidir. Büyük bir metin görünümündeki bir alıntı gibi.
— Salih Erikci

1
İlk yöntem benim durumumda çalışmıyor özel void createTextView (Dize başlığı, Dize metni) {textView = new TextView (this); textView.setTextSize (17); textView.setText (Html.fromHtml ("<b>" + başlık + "</b>") + ":" + metin); }
— garenyondem

1
Düzeni yeniden hesaplama nedeniyle metin büyükse, spannable ve fromHTML seçenekleri / setText yazmayı yavaşlatabilir. Kullanabileceğiniz başka yöntemler varsa bundan kaçının.
— Eugene Kartoyev

42

Programlı:

setTypeface()Yöntemi kullanarak programlı olarak yapabilirsiniz :

Varsayılan Yazı Tipi için kod aşağıdadır

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

ve özel Yazı Tipi ayarlamak istiyorsanız :

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:

Doğrudan XML dosyasında şu şekilde ayarlayabilirsiniz <TextView />:

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

Veya fav yazı tipinizi (varlıklardan) ayarlayabilirsiniz. daha fazla bilgi için bağlantıya bakınız


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

şimdi textviewözellikleri ayarlayın ..

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

Metni kalın yapmak istiyorsanız . bu satırı mizanpajınıza metin görünümü özelliğinde yazın

android:textStyle="bold"

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

10

Olurdu

yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);

ve italik yerine birlikte olmak gerekir Typeface.DEFAULT_BOLDile Typeface.DEFAULT_ITALC.

Nasıl çalıştığını bana bildirin.


10

TextView java koduna göre stilini ayarlamak için bunu dene

txt1.setTypeface(null,Typeface.BOLD_ITALIC);


7

Bunu dene:

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

6

Bunu dene:

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

4

Bunu yapmanın standart yolu özel stilleri kullanmaktır. eski

Aşağıdakileri styles.xmlekleyin.

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

Bu stili TextViewaşağıdaki gibi uygulayın .

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

4

Bunu yapmanın bir yolu:

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

Önceki yazı tipini korumak ve daha önce uygulanmış olanı kaybetmek istemiyorsanız başka bir seçenek daha sonra:

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

Önceki yazı tipini korumak için

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)

3

Bu şekilde deneyebilirsiniz:

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

3

Stil seçim ölçütlerine göre yapmanın en kolay yolu:

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

Özel bir yazı tipi kullanmak istediğim için sadece birkaç cevabın birleşimi benim için çalışıyor. Açıkçası benim layout.xmlgibi ayarları android:textStlyle="italic"AOS tarafından göz ardı edildi. Sonunda aşağıdaki gibi yapmak zorunda kaldım: strings.xmlhedef dize olarak ilan edildi:

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

sonra ek olarak kod:

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

SpannableSeçeneği denemedim (ki çalışmak zorundayız varsayıyorum) ama

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

hiçbir etkisi olmadı. Ayrıca ben kaldırırsanız italic taggelen strings.xmlbırakarak setTypeface()o da hiçbir etkisi yoktur tamamen yalnız. Zor Android ...


2

Ve burada açıklandığı gibi, Android Developers String Resources Eğer tarz metin kaynağınızda parametreleri kullanmanız gerekiyorsa, açılış parantezlerinden kaçmanız gerekir

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

ve çağrı biçimiHtml (dize)

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

2

Benim durumumda:

1 - metni ayarla

2 - yazı tipini ayarla

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

1

OnePlus Slate ™ yazı tipi ile yapılandırılmış bir OnePlus 5T'de benim için çalışan tek şey:

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

Diğer yöntemler, BOLD veya NORMAL olduğunda Roboto'ya geri döner.


1

AndroidX ile basitleştirilmiş etiketler kullanırken HtmlCompat.fromHtml () kullanmayı düşünün

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

En iyi yol onu tanımlamaktır 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>

Ve güncelleyin 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);

Yazı tipini programlı olarak ayarlamak için yukarıdaki yöntemi kullanın.


0

1) TypeFace ile ayarlayabilirsiniz. 2) doğrudan kullanabilirsiniz değerleriniz klasöründe (strings.xml olarak) 3) = "Bu benim kalın yazı Dize myNewString olduğunu olabilir benim italik dize Bu edilir Bu benim altı çizili dizedir


0

Aşağıda verilen örneği kullanarak farklı yazı tipini ayarlayabilirsiniz -

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

Veya farklı bir yazı tipi ve yazı tipi ayarlamak istiyorsanız. Varlığa veya ham klasöre ekleyin ve ardından şu şekilde kullanın

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

  Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");
  tv2.setTypeface(face1);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.