如何设置TextView文本样式,如粗体,斜体字

如何设置TextView样式(粗体或斜体字)在Java和不使用XML布局?

换句话说,我需要用Java编写android:textStyle

557580 次浏览

你有两个选择:

备选案文1(仅适用于粗体、斜体字和下划线):

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

备选案文2:

使用Spannable;更复杂,但您可以动态修改文本属性(不仅是粗体/斜体字,还有颜色)。

应该是的

yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);

斜体字应该能够将Typeface.DEFAULT_BOLD替换为Typeface.DEFAULT_ITALC

让我知道它是如何工作的。

使用textView.setTypeface(Typeface tf, int style);设置TextView的样式属性。有关详细信息,请参阅开发者留档

尝试将TextView设置为粗体或斜体字

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

尝试通过java代码设置您的TextView样式

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

保留以前的字体

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
TextView text = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);

现在设置textview属性…

text.setTypeface(null, Typeface.BOLD);  //-- for only bold the texttext.setTypeface(null, Typeface.BOLD_ITALIC);  //-- for  bold & italic the texttext.setTypeface(null, Typeface.ITALIC);  // -- for  italic the text
TextView text = (TextView)findViewById(R.layout.textName);text.setTypeface(null,Typeface.BOLD);

编程方式:

您可以使用setTypeface()以编程方式执行:

textView.setTypeface(null, Typeface.NORMAL);      // for Normal TexttextView.setTypeface(null, Typeface.BOLD);        // for Bold onlytextView.setTypeface(null, Typeface.ITALIC);      // for ItalictextView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic

XML:

您可以在<TextView />中的XML文件中直接设置:

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

执行此操作的标准方法是使用自定义样式。ex-

styles.xml中添加以下内容。

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

将此样式应用于您的TextView,如下所示。

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

由于我想使用自定义字体,因此只有几个答案的组合对我有用。显然,我的layout.xml中的设置(如android:textStlyle="italic")被AOS忽略了。所以最后我不得不执行以下操作:在strings.xml中,目标字符串被声明为:

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

然后在代码中添加:

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

我没有尝试Spannable选项(我认为必须工作),但

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

没有效果。此外,如果我从strings.xml中删除italic tag,只留下setTypeface(),它也没有效果。棘手的Android…

试试这个:

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

编程方式:

您可以使用setTypeface()方法以编程方式执行:

下面是默认字体的代码

textView.setTypeface(null, Typeface.NORMAL);      // for Normal TexttextView.setTypeface(null, Typeface.BOLD);        // for Bold onlytextView.setTypeface(null, Typeface.ITALIC);      // for ItalictextView.setTypeface(null, Typeface.BOLD_ITALIC); // for Bold and Italic

如果你想设置自定义字体

textView.setTypeface(textView.getTypeface(), Typeface.NORMAL);      // for Normal TexttextView.setTypeface(textView.getTypeface(), Typeface.BOLD);        // for Bold onlytextView.setTypeface(textView.getTypeface(), Typeface.ITALIC);      // for ItalictextView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC); // for Bold and Italic

XML:

您可以像这样直接在<TextView />中的XML文件中设置:

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

或者你可以设置你的fav字体(从资产)。

正如这里所解释的,如果你需要在样式文本资源中使用参数,你必须转义开括号

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

并调用formatHtml(string)

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

最好的方法是在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>

并在TextView中更新它

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

如果您想创建文本大胆。在文本视图属性中的布局中写入此行

android:textStyle="bold"
AppCompatTextView text =(AppCompatTextView)findViewById(R.layout.appCompatTextView1);text.setTypeface(null,Typeface.BOLD);

使用上述方法以编程方式设置字体。

你可以做的一个方法是:

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

如果您想保留以前的字体并且不想丢失以前应用的另一个选项:

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

你可以试试这样:

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

在我的案例中:

1-设置文本

2-设置字体

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

这是我在配置有OnePlus Slate™字体的OnePlus 5T上唯一有用的东西:

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

其他方法会使它在BOLD或NORMAL时回退到Roboto。

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

保留以前的字体

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

试试这个:

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

您可以根据样式选择标准执行的最简单方法是:

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 EidtTexteditText.setText(Html.fromHtml(pre + editText.getText().toString()+ post));

1)您可以使用TypeFace设置它。2)您可以直接在strings.xml中使用(在您的值文件夹中)3)你可以字符串myNewString="这是我的粗体文本这是我的斜体字符串这是我的下划线字符串

在使用AndroidX的简化标签时,请考虑使用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));

您可以使用下面给出的示例设置不同的字体-

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

或者如果您想设置不同的字体及其字体。将其添加到资产或原始文件夹,然后像

  Typeface face= Typeface.createFromAsset(getAssets(), "font/font.ttf");tv1.setTypeface(face);
Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");tv2.setTypeface(face1);
//leveraging the extension functionsfun TextView.makeBold(){this.setTypeface(this.typeface,Typeface.BOLD)}

yourTextView.makeBold()