13

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

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

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

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

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

4

8 回答 8

31

使用可扩展字符串

 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

于 2013-06-06T12:28:32.557 回答
15

在你的字符串文件中

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

并输出

在此处输入图像描述

于 2013-06-06T12:22:46.307 回答
3

请将此字符串放入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)));

这是bestway和工作的魅力。

于 2013-06-06T12:33:52.177 回答
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 上。

于 2013-06-06T12:16:04.970 回答
1

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

于 2013-06-06T12:16:25.980 回答
1

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

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

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

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

于 2020-06-17T13:55:26.180 回答
1

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
于 2020-06-16T14:54:36.850 回答
0

相反,使用这个:

一、声明textView

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

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

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

最后,使用为您的 textView 设置字体

tv1.setTypeface(null, Typeface.BOLD); 

而且,你完成了。

于 2017-02-02T14:02:47.713 回答