如何使textview的某些部分看起来大胆?

时间:2014-04-14 12:35:19

标签: android

我从Contacts中获取数据并在textview中显示它。我希望有一部分是Bold。如何做到这一点。我试过这样做: sb.append(Html.fromHtml(“\ n”+“联系人姓名:”+姓名); 但它不起作用。任何人都可以帮助我

6 个答案:

答案 0 :(得分:0)

您可以尝试以下代码

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

答案 1 :(得分:0)

在你的字符串文件中

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

然后在您的活动中

    TextView tv=(TextView)findViewById(R.id.textView1);
    tv.setText(Html.fromHtml(getString(R.string.your_text)));

----------------- OR -----------------------

只需在HTML中构建您的String并进行设置:

    String sourceString = "<b>" + id + "</b> " + name; 
    mytextview.setText(Html.fromHtml(sourceString));

答案 2 :(得分:0)

尝试以下方式 -

sb.setText(Html.fromHtml("<b>" +" Contact Name:" + name + "</b>"));

如果这不能解决问题,请回复。

<强>更新

如果您只想将指定的文本追加到TextView的显示缓冲区,那么您的代码仍然不正确可能是一个错字。

你用过这个 -

sb.append(Html.fromHtml("\n"+" Contact Name:" + name); 

而是使用它 -

sb.append(Html.fromHtml("<b>"+" Contact Name:" + name + "</b>")); 

注意<b> tag开头和</b> tag结束。

另请注意,您尚未使用)

关闭结束括号

<强>更新

我猜你的StringBuffer而不是TextView。因此,您必须在TextView中的StringBuffer上进行设置。

让你的TextView是,

TextView tv = (TextView)findViewById(R.id.ur_text_view_id);

然后你只需执行以下操作---

tv.setText(Html.fromHtml("<b> Contact Name:</b>" + 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()));

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

答案 3 :(得分:0)

尝试使用spannable text

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

答案 4 :(得分:0)

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

<强> 2

        etx.setText(Html.fromHtml("HELLOO <b>ADVENTURE!</b>")); 

尝试上面的代码。

答案 5 :(得分:0)

您需要在创建过程中以html格式设置字符串格式,然后在整个字符串上应用formHtml方法。 Html.formHtml()方法从提供的HTML字符串返回可显示的样式文本(Spanned)。如果你将这个方法应用于substring(带有html标签)之后将它们附加到StringBuffer,sb.append(Html.fromHtml(“\ n”+“&lt; b&gt; Contact Name&lt; / b&gt;:”+ name)实际上调用Spanned.toString()方法导致删除html标记,因此您在文本视图中查看纯文本。

试试这种方式 这将解决您的问题

     StringBuffer sb=new StringBuffer();
     sb.append("hello");
     sb.append("<b>How</b>");
     sb.append("are you");
     tv.setText(Html.fromHtml(sb.toString()));