So legen Sie TextView textStyle fest, z. B. fett, kursiv


843

Wie kann man den TextViewStil (fett oder kursiv) in Java und ohne Verwendung des XML-Layouts festlegen ?

Mit anderen Worten, ich muss android:textStylemit Java schreiben .

Antworten:


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

So behalten Sie die vorherige Schrift bei

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

5
Um den Stil zu entfernen, kann Typeface.NORMAL
Brais Gabin

351
Wenn Sie dies tun, verlieren Sie alle vorherigen Schriften. Führen Sie zum Beibehalten des vorherigen Befehls Folgendes aus: textView.setTypeface (textView.getTypeface (), Typeface.BOLD_ITALIC);
Leocadiotin

34
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);entfernt kein fett oder kursiv gestyltes Styling von a TextView. Sie müssen dafür verwenden textView.setTypeface(null, Typeface.NORMAL);.
Jarett Millard

57
Verwenden Sie den folgenden Code, um frühere Schriftarten textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
beizubehalten,

6
Danke @Shnkc, du hast mich in die richtige Richtung gelenkt. Eigentlich brauchen Sie nur: textView.setTypeface (Typeface.create (textView.getTypeface (), Typeface.NORMAL));
PedroHidalgo

271

Versuchen Sie dies, TextViewum Fett oder Kursiv zu setzen

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

14
Übrigens, wenn Sie einen vorhandenen Schriftstil löschen möchten, müssen Sie etwas anderes tun, z. B.:tv.setTypeface(Typeface.create(tv.getTypeface(), Typeface.NORMAL));
greg7gkb

@ greg7gkb tv.setTypeface(null, Typeface.BOLD);wird dies nicht dasselbe tun (einen vorhandenen Schriftstil löschen)?
Prabs

Die Übergabe von null an setTypeface () bedeutet, dass die Textansicht eine fest codierte Standardeinstellung verwendet, die sich möglicherweise von der zuvor festgelegten Schriftart unterscheidet.
Greg7gkb

142

Programmatisch:

Sie können programmgesteuert Folgendes verwenden 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:

Sie können direkt in einer XML-Datei Folgendes festlegen <TextView />:

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

11
Der Fragesteller fragte, wie dies ohne Verwendung des XML-Layouts geschehen könne.
JulianSymes

6
Frage überprüfen with in Java and without using XMLÜbrigens Es wird auch anderen helfen.
Pratik Butani

5
Ja. Ich bin über Google hierher gekommen und es hat mir nur geholfen. Danke :)
Atul

96

Sie haben zwei Möglichkeiten:

Option 1 (funktioniert nur fett, kursiv und unterstrichen):

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

Option 2:

Verwenden Sie ein Spannable ; Es ist komplizierter, aber Sie können die Textattribute dynamisch ändern (nicht nur fett / kursiv, sondern auch farbig).


6
Mit können typeFaceSie einen einzelnen Stil für den gesamten Text festlegen.
Gabriel Negut

2
Wenn ich es in meiner benutzerdefinierten Zeile versuche, wird nicht verstanden, warum? String s1 = "<b> Sie befinden sich in: </ b>"; Inhaber.Adresse = (TextView) convertView.findViewById (R.id.address_text_view); holder.address.setText (Html.fromHtml (s1) + track.getAddress ());
Shylendra Madda

2
Diese Methode eignet sich hervorragend für die teilweise Textgestaltung. Wie ein Zitat in einer großen Textansicht.
Salih Erikci

1
Die erste Methode funktioniert in meinem Fall nicht. Private void createTextView (String title, String text) {textView = new TextView (this); textView.setTextSize (17); textView.setText (Html.fromHtml ("<b>" + title + "</ b>") + ":" + text); }
Garenyondem

1
Die Optionen spannable und fromHTML können die Eingabe von / setText verlangsamen, wenn der Text aufgrund von Layout-Neuberechnungen groß ist. Vermeiden Sie es, wenn Sie andere Methoden zur Verfügung haben.
Eugene Kartoyev

43

Programmatisch:

Sie können programmgesteuert Folgendes tun setTypeface():

Unten finden Sie den Code für die Standardschrift

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

und wenn Sie eine benutzerdefinierte Schriftart festlegen möchten :

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:

Sie können direkt in der XML-Datei Folgendes festlegen <TextView />:

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

Oder Sie können Ihre Lieblingsschriftart (aus Assets) festlegen. Weitere Informationen finden Sie unter Link


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

Jetzt legen Sie die textviewEigenschaften fest ..

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

Einfach, wenn Sie Text fett machen möchten . Schreiben Sie diese Zeile in Ihr Layout in der Eigenschaft Textansicht

android:textStyle="bold"

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

10

Es wäre

yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);

und kursiv sollte ersetzt sein können , Typeface.DEFAULT_BOLDmit Typeface.DEFAULT_ITALC.

Lassen Sie mich wissen, wie es funktioniert.


10

Versuchen Sie dies, um Ihren TextView Stil durch Java-Code festzulegen

txt1.setTypeface(null,Typeface.BOLD_ITALIC);


7

Versuche dies:

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

6

Versuche dies:

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

4

Die Standardmethode hierfür ist die Verwendung der benutzerdefinierten Stile. Ex-

In styles.xmlfügen Sie die folgende.

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

Wenden Sie diesen Stil TextViewwie folgt auf Ihren an.

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

4

Eine Möglichkeit ist:

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

Eine weitere Option, wenn Sie die vorherige Schrift beibehalten und die zuvor angewendete Schrift nicht verlieren möchten:

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

So behalten Sie die vorherige Schrift bei

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

3

Sie können Folgendes versuchen:

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

3

Der einfachste Weg, den Sie basierend auf den Stilauswahlkriterien machen können, ist:

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

Da ich eine benutzerdefinierte Schriftart verwenden möchte, funktioniert für mich nur die Verbindung mehrerer Antworten. Offensichtlich wurden Einstellungen in meinem layout.xmlLike android:textStlyle="italic"von AOS ignoriert. Also musste ich endlich Folgendes tun: In strings.xmlder Zielzeichenfolge wurde deklariert als:

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

dann zusätzlich im Code:

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

Ich habe die SpannableOption nicht ausprobiert (von der ich annehme, dass sie funktionieren muss), aber

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

hatte keine Wirkung. Auch wenn ich das italic tagaus dem strings.xmlAlleinlassen entferne setTypeface(), hat es auch keine Wirkung. Tricky Android ...


2

Und wie hier erläutert , müssen Sie die öffnenden Klammern umgehen, wenn Sie Parameter für Android Developers String Resources verwenden müssen, wenn Sie Parameter in Ihrer gestalteten Textressource verwenden müssen

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

und rufe formatHtml (string) auf

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

2

In meinem Fall:

1 - Text einstellen

2 - Schriftart einstellen

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

1

Dies ist das einzige, was bei einem OnePlus 5T funktioniert hat, der mit der OnePlus Slate ™ -Schrift konfiguriert ist:

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

Andere Methoden würden dazu führen, dass Roboto entweder auf BOLD oder NORMAL zurückgreift.


1

Wenn Sie vereinfachte Tags mit AndroidX verwenden, sollten Sie HtmlCompat.fromHtml () verwenden.

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

Der beste Weg ist, es in zu definieren 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>

Und aktualisieren Sie es in 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);

Verwenden Sie die obige Methode, um die Schrift programmgesteuert festzulegen.


0

1) Sie können es mit TypeFace einstellen. 2) Sie können direkt in strings.xml (in Ihrem Werteordner) verwenden. 3) Sie können String myNewString = "Dies ist mein fett gedruckter Text. Dies ist mein kursiver String. Dies ist mein unterstrichener String


0

Sie können die verschiedenen Schriftarten anhand des folgenden Beispiels einstellen -

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

Oder wenn Sie eine andere Schriftart und deren Schriftart festlegen möchten. Fügen Sie es dem Asset oder Raw-Ordner hinzu und verwenden Sie es dann wie folgt

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

  Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");
  tv2.setTypeface(face1);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.