【发布时间】:2013-06-06 12:13:00
【问题描述】:
我彻底搜索了 SO,但没有得到我的问题的答案。
我想设置一个段落,我会用 XML 设置它
文本包含标题和步骤以及常规文本。我想将标题和步骤设为粗体并以普通文本显示。
我可以通过使用不同的 's 来做到这一点,但我怎样才能在同一个 TextView 中做到这一点。
我的意思是使用同一个TextView,如何为不同的句子设置不同的属性?
【问题讨论】:
我彻底搜索了 SO,但没有得到我的问题的答案。
我想设置一个段落,我会用 XML 设置它
文本包含标题和步骤以及常规文本。我想将标题和步骤设为粗体并以普通文本显示。
我可以通过使用不同的 's 来做到这一点,但我怎样才能在同一个 TextView 中做到这一点。
我的意思是使用同一个TextView,如何为不同的句子设置不同的属性?
【问题讨论】:
使用可扩展的字符串
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);
【讨论】:
在你的字符串文件中
<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)));
然后输出
【讨论】:
43
x 78
____
4
您可以像在 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 上。
【讨论】:
请将此字符串放入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)));
这是最好的方式和工作的魅力。
【讨论】:
TextViews 支持SpannableStrings。您可以自定义String 或将字符串格式化为html,然后使用tv.setText(Html.fromHtml(yourString)); 进行设置
【讨论】:
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
【讨论】:
最好的方法是在字符串资源中。
<string name="sample_string"><![CDATA[<b>Title</b>StackOverflow]]></string>
注意,粗体标记 (<b> </b>) 之间的文本将以粗体显示。同样,您可以设置其他样式。例如。 <i> 表示斜体,<u> 表示下划线。
希望这会有所帮助,祝你好运!
【讨论】:
改为使用这个:
首先,声明textView
TextView tv1 = (TextView) getActivity().findViewById(R.id.t1);
然后将它的文本设置为你想要的字符串
tv1.setText(Html.fromHtml(getString(R.string.my_text)));
最后,为你的 textView 设置字体
tv1.setTypeface(null, Typeface.BOLD);
而且,你已经完成了。
【讨论】: