Android 如何使textview的某些部分看起来粗体?

Android 如何使textview的某些部分看起来粗体?,android,Android,我正在从Contacts获取数据,并将其显示在textview中。我想要一部分,不要用粗体,怎么做。我试着这样做: sb.append(Html.fromHtml(“\n”+”联系人姓名:“+Name”); 但它不起作用。谁能帮我一下吗?你可以试试下面的代码 String text_view_str = "<b>Contact Name:</b>" + name; TextView tv = (TextView)findViewById(R.id.ur_text_view

我正在从Contacts获取数据,并将其显示在textview中。我想要一部分,不要用粗体,怎么做。我试着这样做: sb.append(Html.fromHtml(“\n”+”联系人姓名:“+Name”); 但它不起作用。谁能帮我一下吗?

你可以试试下面的代码

String text_view_str = "<b>Contact Name:</b>" + name;
TextView tv = (TextView)findViewById(R.id.ur_text_view_id);
tv.setText(Html.fromHtml(text_view_str));
String text\u view\u str=“联系人姓名:”+姓名;
TextView tv=(TextView)findViewById(R.id.ur\u text\u view\u id);
tv.setText(Html.fromHtml(text_view_str));
在字符串文件中

<string name="your_text">
<![CDATA[
<p> <b>Title</b> </p>
<p><b><i>Step 1</i></b><p>step1 content content content  content content content</p></p>
<p><b><i>Step 2</i></b><p>step2 content  content content content  content content content</p></p>
]]>
</string>
-----------------或-----------------------

只需在HTML中构建字符串并进行设置:

    String sourceString = "<b>" + id + "</b> " + name; 
    mytextview.setText(Html.fromHtml(sourceString));
String sourceString=”“+id+“”+name;
mytextview.setText(Html.fromHtml(sourceString));
尝试以下方法-

sb.setText(Html.fromHtml("<b>" +" Contact Name:" + name + "</b>"));
用这个代替-

sb.append(Html.fromHtml("<b>"+" Contact Name:" + name + "</b>")); 
然后,您只需执行以下操作---

tv.setText(Html.fromHtml(“联系人姓名:”+Name));
更新:

由于您使用StringBuffer存储所有联系人详细信息,因此只需使用以下命令-

 //the below in a loop to add each name to string buffer
 for(<loop through name length>)
    sb.append("<br>" + "<b>Contact Name</b>:" + name);

 //finally use this outside loop to set text to the textview.
 tv.setText(Html.fromHtml(sb.toString()));
//在一个循环中输入以下内容,以将每个名称添加到字符串缓冲区中
for()
sb.追加(“
”+”联系人姓名:“+姓名”); //最后,使用此外部循环将文本设置为textview。 tv.setText(Html.fromHtml(sb.toString());

注意:最后一次更新仅在第一行位于循环中并在字符串缓冲区中附加每个名称时有用。否则,您可以直接使用此答案的第二次最后更新。

尝试使用可扩展文本

    StringBuilder sb = new StringBuilder();
    String s1 = "Contact Name:" ;
    sb.append(s1);
    String nameString = " name"; 
    sb.append(nameString);
    String s2 = "\nEmail :";
    sb.append(s2);
    String emailString = " email";
    sb.append(emailString);
    String s3 = "\nPhoneNo :";
    sb.append(s3);
    String phNoString = " 121564";
    sb.append(phNoString);
    SpannableString ss1=  new SpannableString(sb);
    ss1.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0,s1.length(), 0);
    ss1.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), s1.length() + nameString.length(),s1.length() + nameString.length()+s2.length(), 0);
    ss1.setSpan(new StyleSpan(android.graphics.Typeface.BOLD),s1.length() + nameString.length()+s2.length()+emailString.length(), s1.length()+nameString.length()+s2.length()+emailString.length()+s3.length(), 0);

    TextView tv= (TextView) findViewById(R.id.textview);
    tv.setText(ss1);
1.

        SpannableStringBuilder sb = new SpannableStringBuilder("HELLOO");
        final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD); // Span to make text bold
        sb.setSpan(bss, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); // make first 4 characters Bold 
        etx.setText(sb);
        etx.setText(Html.fromHtml("HELLOO <b>ADVENTURE!</b>")); 
2.

        SpannableStringBuilder sb = new SpannableStringBuilder("HELLOO");
        final StyleSpan bss = new StyleSpan(android.graphics.Typeface.BOLD); // Span to make text bold
        sb.setSpan(bss, 0, 4, Spannable.SPAN_INCLUSIVE_INCLUSIVE); // make first 4 characters Bold 
        etx.setText(sb);
        etx.setText(Html.fromHtml("HELLOO <b>ADVENTURE!</b>")); 
etx.setText(Html.fromHtml(“HELLOO ADVENTURE!”);

尝试上面的代码。

您需要在创建过程中以html格式格式化字符串,然后对整个字符串应用formHtml方法。html.formHtml()方法从提供的html字符串返回可显示的样式文本(跨距)。如果您在将其附加到StringBuffer之后对子字符串(带有html标记)应用此方法,则sb.append(Html.fromHtml(“\n”+”联系人姓名:“+Name”)实际上调用了span.toString()方法,从而删除了Html标记,因此您可以在文本视图中查看纯文本

这样试试 这会解决你的问题

     StringBuffer sb=new StringBuffer();
     sb.append("hello");
     sb.append("<b>How</b>");
     sb.append("are you");
     tv.setText(Html.fromHtml(sb.toString()));
StringBuffer sb=new StringBuffer();
某人附加(“你好”);
某人附加(“如何”);
某人附加(“你是谁”);
tv.setText(Html.fromHtml(sb.toString());

使用此
myTextView.setText(Html.fromHtml(“Title
此处的说明

”)
这是支持的html标记列表,请确保您将其头发剃光。另外,请使用谷歌进行一些研究。我尝试了这种技术。但它没有变为粗体。我只希望左侧部分变为粗体。@sangeetha-好的,检查我更新的答案。这将使左侧部分变为粗体。@sangeetha-不需要附加details仅用于此目的,因为您有一个动态字段
name
。您可以直接使用
tv.setText(Html.fromHtml(“联系人姓名:+name));
获取数据时。在我的代码中。我正在检索联系人详细信息并将其附加到字符串生成器中。但我只希望某些部分为粗体。因此,如果我使用spannableString,则无需使用StringBuffer?您可以将
StringBuffer
spannableString
一起使用。正如您在
s2
字符串中看到的那样,我正在附加ode>s和
name
,因此您可以使用'StringBuffer'而不是
s2 String
。根据您所说的,代码如下:s1=“\n联系人姓名:”;sb.append(s1+name);但我还有两个详细信息要追加(电话号码和电子邮件id)。那么怎么做呢。我的意思是,如果我使用这个:SpannableString ss1=new SpannableString(s2);-->在结尾,它只会使联系人姓名加粗。如何使电话号码和电子邮件也加粗?请参见第行
ss1.setSpan(新的相对长度span(2f),0,s1.length(),0);
第二个参数是起始索引,下一个参数是要
加粗的子字符串的结束索引。您可以多次使用这一行来获得所需的字符串。欢迎使用。如果它对您有效,请将其作为ans接受,因为我使用Stringbuffer来追加文本。现在要使用SpannableStringBuilder,我需要知道ind例如,如何动态地知道文本的索引。因为我添加了姓名、电话号码和电子邮件id。谢谢,现在它工作了。但问题是。它显示在同一行中。我尝试添加新行。但它仍然不断出现。可能有什么问题?我尝试了这个,它对我有效:StringBuffer sb=new StringBuffer();s1=“\n联系人姓名:”;sb.append(s1+Name+“\n”);s2=“\n电话号码:”;sb.append(s2+Phone+“\n”);s3=“\n电子邮件:”;sb.append(s3+emailContact);sb.append(“\n”)txtv.setText(Html.fromHtml(sb.toString());但问题是..它显示在同一行中,.我尝试添加新行..但它仍然不断出现..可能是什么问题?嗨,谢谢..它现在工作了..我使用了
而不是“\n”“现在它正按照我的预期工作。我正在创建一个简单的学生申请表。我已将地址的EditText设置为多行。我面临的问题是EditText与我的按钮重叠。当我在编辑文本中按enter键时,有没有办法自动更改按钮位置?”?
        etx.setText(Html.fromHtml("HELLOO <b>ADVENTURE!</b>")); 
     StringBuffer sb=new StringBuffer();
     sb.append("hello");
     sb.append("<b>How</b>");
     sb.append("are you");
     tv.setText(Html.fromHtml(sb.toString()));