Risposte:
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);
Per mantenere il carattere tipografico precedente
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);
non rimuoverà lo stile grassetto o corsivo da a TextView
. Dovrai usarlo textView.setTypeface(null, Typeface.NORMAL);
per quello.
textView.setTypeface(Typeface.create(textView.getTypeface(), Typeface.NORMAL), Typeface.NORMAL);
Prova questo TextView
per attivare grassetto o corsivo
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
tv.setTypeface(Typeface.create(tv.getTypeface(), Typeface.NORMAL));
tv.setTypeface(null, Typeface.BOLD);
non farà lo stesso (cancella uno stile di carattere esistente)?
Puoi fare programmaticamente usando 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
È possibile impostare direttamente nel file XML <TextView />
come:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
with in Java and without using XML
A proposito Aiuterà anche gli altri.
Hai due opzioni:
Opzione 1 (funziona solo in grassetto, corsivo e sottolineato):
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));
Opzione 2:
Usa uno Spannable ; è più complicato, ma puoi modificare dinamicamente gli attributi del testo (non solo grassetto / corsivo, ma anche i colori).
typeFace
te puoi impostare un unico stile per l'intero testo.
Puoi fare programmaticamente usando il setTypeface()
metodo:
Di seguito è riportato il codice per il carattere tipografico predefinito
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
e se si desidera impostare un carattere personalizzato :
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
È possibile impostare direttamente nel file XML in <TextView />
questo modo:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Oppure puoi impostare il tuo carattere preferito (dalle risorse). per maggiori informazioni vedi link
TextView text = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
ora imposta le textview
proprietà ..
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
Sarebbe
yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);
e corsivo dovrebbe essere in grado di essere con la sostituzione Typeface.DEFAULT_BOLD
con Typeface.DEFAULT_ITALC
.
Fammi sapere come funziona.
Utilizzare textView.setTypeface(Typeface tf, int style);
per impostare la proprietà di stile di TextView
. Consulta la documentazione per gli sviluppatori per ulteriori informazioni.
Prova questo:
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Prova questo:
TextView textview = (TextView)findViewById(R.id.textview_idname);
textview.setTypeface(null,Typeface.BOLD);
Il modo standard per farlo è usare gli stili personalizzati. Ex-
In styles.xml
aggiungere quanto segue.
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyApp.TextAppearance.LoginText">
<item name="android:textStyle">bold|italic</item>
</style>
Applica questo stile al tuo TextView
come segue.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/MyApp.TextAppearance.LoginText" />
Un modo che puoi fare è:
myTextView.setTypeface(null, Typeface.ITALIC);
myTextView.setTypeface(null, Typeface.BOLD_ITALIC);
myTextView.setTypeface(null, Typeface.BOLD);
myTextView.setTypeface(null, Typeface.NORMAL);
Un'altra opzione se si desidera mantenere il carattere tipografico precedente e non si vuole perdere l'applicazione precedentemente:
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);
textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);
Per mantenere il carattere tipografico precedente
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
Puoi provare così:
<string name="title"><u><b><i>Your Text</i></b></u></string>
Il modo più semplice che puoi fare in base ai criteri di selezione dello stile è:
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));
Dal momento che voglio usare un carattere personalizzato, solo la combinazione di più risposte funziona per me. Ovviamente le impostazioni nel mio layout.xml
like sono android:textStlyle="italic"
state ignorate da AOS. Quindi alla fine ho dovuto fare come segue: nella strings.xml
stringa di destinazione è stato dichiarato come:
<string name="txt_sign"><i>The information blah blah ...</i></string>
quindi anche nel codice:
TextView textSign = (TextView) findViewById(R.id.txt_sign);
FontHelper.setSomeCustomFont(textSign);
textSign.setTypeface(textSign.getTypeface(), Typeface.ITALIC);
Non ho provato l' Spannable
opzione (che presumo DEVE funzionare) ma
textSign.setText(Html.fromHtml(getString(R.string.txt_sign)))
non ha avuto effetto. Anche se mi tolgo la italic tag
da strings.xml
lasciare il setTypeface()
tutto solo non ha alcun effetto neanche. Android ingannevole ...
E come spiegato qui Risorse per stringhe di sviluppatori Android se è necessario utilizzare i parametri nella risorsa di testo in stile, è necessario sfuggire alle parentesi quadre
<resources>
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
</resources>
e chiama formatHtml (stringa)
Resources res = getResources();
String text = String.format(res.getString(R.string.welcome_messages), username, mailCount);
CharSequence styledText = Html.fromHtml(text);
Durante l'utilizzo di tag semplificati con AndroidX, considera l'utilizzo di 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));
Il modo migliore è definirlo in 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>
E aggiornalo 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" />
1) È possibile impostarlo con TypeFace. 2) Puoi usare direttamente in strings.xml (nella cartella dei valori) 3) Puoi mettere in stringa myNewString = "Questo è il mio testo in grassetto Questa è la mia stringa in corsivo Questa è la mia stringa sottolineata
È possibile impostare il carattere diverso utilizzando l'esempio riportato di seguito -
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
O se vuoi impostare un carattere diverso e il suo carattere tipografico. Aggiungilo alla risorsa o alla cartella non elaborata e poi usalo come
Typeface face= Typeface.createFromAsset(getAssets(), "font/font.ttf");
tv1.setTypeface(face);
Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");
tv2.setTypeface(face1);