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.