设置TextView样式(粗体或斜体)

Jus*_*tMe 806 android styles textview

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

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

Tan*_*dal 1810

textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);
Run Code Online (Sandbox Code Playgroud)

保留以前的字体

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
Run Code Online (Sandbox Code Playgroud)

  • 如果你这样做,你将丢失任何以前的字体.要保留前一个,请执行类似textView.setTypeface(textView.getTypeface(),Typeface.BOLD_ITALIC); (349认同)
  • 要保留任何以前的字体,但要删除粗体或斜体样式,请使用以下代码:`textView.setTypeface(Typeface.create(textView.getTypeface(),Typeface.NORMAL),Typeface.NORMAL);` (53认同)
  • `textView.setTypeface(textView.getTypeface(),Typeface.NORMAL);`不会从`TextView`中删除粗体或斜体样式.你需要使用`textView.setTypeface(null,Typeface.NORMAL);`. (33认同)
  • 谢谢@Shnkc,你指出了正确的方向.实际上你只需要:textView.setTypeface(Typeface.create(textView.getTypeface(),Typeface.NORMAL)); (6认同)
  • 要删除样式,可以使用Typeface.NORMAL (5认同)

Nir*_*tel 263

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

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,如果你想清除现有的字体样式,你需要做一些不同的事情,例如:`tv.setTypeface(Typeface.create(tv.getTypeface(),Typeface.NORMAL));` (13认同)

Pra*_*ani 134

编程方式:

您可以使用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
Run Code Online (Sandbox Code Playgroud)

XML:

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

android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Run Code Online (Sandbox Code Playgroud)

  • 提问者询问如何在不使用XML布局的情况下执行此操作. (10认同)
  • 使用Java检查问题`而不使用XML`顺便说一句它也会对其他人有所帮助. (5认同)
  • 是.我是通过Google来到这里的,它只是帮助了我.谢谢 :) (5认同)

Gab*_*gut 91

您有两种选择:

选项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));
Run Code Online (Sandbox Code Playgroud)

选项2:

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

  • 使用`typeFace`,您可以为整个文本设置单一样式. (5认同)
  • 当我尝试我的自定义行时,它没有得到原因?字符串s1 ="<b>你在:</ b>"; holder.address =(TextView)convertView.findViewById(R.id.address_text_view); holder.address.setText(Html.fromHtml(s1)+ track.getAddress()); (2认同)
  • 这种方法是很棒的部分文本样式.就像大文本视图中的引用一样. (2认同)

aks*_*hay 38

编程方式:

您可以使用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
Run Code Online (Sandbox Code Playgroud)

如果要设置自定义字体:

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
Run Code Online (Sandbox Code Playgroud)

XML:

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

android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
Run Code Online (Sandbox Code Playgroud)

或者您可以设置您的fav字体(来自资产).有关更多信息,请参阅链接


Rav*_*avi 15

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

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Run Code Online (Sandbox Code Playgroud)

或者如果您想设置不同的字体及其字样。将其添加到 asset 或 raw 文件夹中,然后像这样使用它

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

  Typeface face1= Typeface.createFromAsset(getAssets(), "font/font1.ttf");
  tv2.setTypeface(face1);
Run Code Online (Sandbox Code Playgroud)


Aka*_*kar 12

TextView text = (TextView)findViewById(R.id.THE_TEXTVIEW_ID);
Run Code Online (Sandbox Code Playgroud)

现在设置textview属性..

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
Run Code Online (Sandbox Code Playgroud)


Nik*_*hil 10

尝试TextView 通过java代码设置你的风格

txt1.setTypeface(null,Typeface.BOLD_ITALIC);
Run Code Online (Sandbox Code Playgroud)


小智 10

只是如果你想使文字变粗.在文本视图属性的布局中写下此行

android:textStyle="bold"
Run Code Online (Sandbox Code Playgroud)


小智 9

TextView text = (TextView)findViewById(R.layout.textName);
text.setTypeface(null,Typeface.BOLD);
Run Code Online (Sandbox Code Playgroud)


Dus*_*ley 8

这将是

yourTextView.setTypeface(null,Typeface.DEFAULT_BOLD);
Run Code Online (Sandbox Code Playgroud)

斜体应该可以替换Typeface.DEFAULT_BOLDTypeface.DEFAULT_ITALC.

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


Ami*_*rhf 8

textView.setTypeface(null, Typeface.BOLD_ITALIC);
textView.setTypeface(null, Typeface.BOLD);
textView.setTypeface(null, Typeface.ITALIC);
textView.setTypeface(null, Typeface.NORMAL);
Run Code Online (Sandbox Code Playgroud)

保留之前的字体

textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC)
Run Code Online (Sandbox Code Playgroud)


小智 7

尝试这个:

textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
Run Code Online (Sandbox Code Playgroud)


Din*_*rma 5

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


小智 5

试试这个:

TextView textview = (TextView)findViewById(R.id.textview_idname);
textview.setTypeface(null,Typeface.BOLD);
Run Code Online (Sandbox Code Playgroud)