【问题标题】:Android TextView in BOLD and Normal text粗体和普通文本的 Android TextView
【发布时间】:2013-06-06 12:13:00
【问题描述】:

我彻底搜索了 SO,但没有得到我的问题的答案。

我想设置一个段落,我会用 XML 设置它

文本包含标题和步骤以及常规文本。我想将标题和步骤设为粗体并以普通文本显示。

我可以通过使用不同的 's 来做到这一点,但我怎样才能在同一个 TextView 中做到这一点。

我的意思是使用同一个TextView,如何为不同的句子设置不同的属性?

【问题讨论】:

标签: android android-layout


【解决方案1】:

使用可扩展的字符串

 TextView tv = (TextView) findViewById(R.id.tv);  
 String steps = "Hello Everyone";
 String title="Bold Please!";

 SpannableString ss1=  new SpannableString(title);
 ss1.setSpan(new StyleSpan(Typeface.BOLD), 0, ss1.length(), 0); 
 tv.append(ss1);
 tv.append("\n");
 tv.append(steps);

更多样式请查看链接@http://blog.stylingandroid.com/archives/177

【讨论】:

  • Here is the Screenshot 谢谢,这对我来说很好用!如您所见,我可以为“标题”、“作者”和“标签”设置 BOLD。
【解决方案2】:

在你的字符串文件中

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

然后输出

【讨论】:

  • 这种情况下我们直接使用 String 中的值,所以涉及到 XML 呢?
  • 试过了,但它没有考虑空格:

    43
    x 78
    ____
    4

    即使在 cmets 中它也不占用空格... 43和4之前有3个空格
  • 我应该使用 &nbsp 吗?它会起作用,但还有其他选择吗?
【解决方案3】:

您可以像在 HTML 中一样对其进行格式化:我们称之为custom_text

<b>Your title here</b>
This is the non-bolded stuff. 

然后使用Html类加载文本:

mTextView.setText(Html.fromHtml(getString(R.string.custom_text)));

这将创建一个可扩展的字符串并将其设置在 TextView 上。

【讨论】:

  • 不使用 HTML 兄弟还有其他方法吗?
  • 我们可以直接在 XML 中而不是 String.xml 中做吗?
【解决方案4】:

请将此字符串放入res->string.xml

<string name="your_html">
    <![CDATA[p><b>This is bold text</b> rementing is simple text

    ]]>
    </string>

现在你可以在需要这个东西的时候使用。

tv.setText(Html.fromHtml(getString(R.string.your_html)));

这是最好的方式和工作的魅力。

【讨论】:

  • 嗨,我一直尝试在 Android M 中制作字符串粗体和斜体,但它不起作用。
【解决方案5】:

TextViews 支持SpannableStrings。您可以自定义String 或将字符串格式化为html,然后使用tv.setText(Html.fromHtml(yourString)); 进行设置

【讨论】:

    【解决方案6】:

    kotlin 解决方案: 对我来说,问题是我通过数据绑定在 XML 中设置了一个文本。我不得不删除它。然后这开始生效了

    val spannableStringBuilder = SpannableStringBuilder(headerText)
        spannableStringBuilder.setSpan(StyleSpan(Typeface.BOLD), 0, headerText.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
        spannableStringBuilder.append(" ")
        spannableStringBuilder.append(subText)
        textView.text = spannableStringBuilder
    

    【讨论】:

      【解决方案7】:

      最好的方法是在字符串资源中。

      <string name="sample_string"><![CDATA[<b>Title</b>StackOverflow]]></string>
      

      注意,粗体标记 (&lt;b&gt; &lt;/b&gt;) 之间的文本将以粗体显示。同样,您可以设置其他样式。例如。 &lt;i&gt; 表示斜体,&lt;u&gt; 表示下划线。

      希望这会有所帮助,祝你好运!

      【讨论】:

        【解决方案8】:

        改为使用这个:

        首先,声明textView

        TextView tv1 = (TextView) getActivity().findViewById(R.id.t1); 
        

        然后将它的文本设置为你想要的字符串

        tv1.setText(Html.fromHtml(getString(R.string.my_text)));
        

        最后,为你的 textView 设置字体

        tv1.setTypeface(null, Typeface.BOLD); 
        

        而且,你已经完成了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-28
          • 1970-01-01
          • 2014-10-04
          • 1970-01-01
          相关资源
          最近更新 更多