我想在TextView应用程序中添加大量格式化文本,但不知道如何... 我尝试将它添加到我的字符串资源文件但id没有工作.. ii做到了这一点 -
<string name="some_text">Create stickers for Gboard on Google Play
01 September 2017
Posted by Alan Ni, Associate Product Manager, Gboard
Messaging is getting more and more expressive -- today you can say I love you
</string>
然后在活动......
TextView textView=(TextView) findViewById(R.id.some);
textView.setText(getString(R.string.some_text));
但它只是以相同的格式显示所有内容..我希望它以粗体显示标题并为事物添加颜色.. 基本上我想显示我们在MS Office中的写作方式
答案 0 :(得分:9)
如果您想为文字添加样式,您可以选择一些选项。
最简单的方法是使用HTML标记。你必须用CDATA
包裹它。
例如,您可以创建字符串:
<string name="some_text"><![CDATA[Create stickers for <b>Gboard</b>...]]></string>
然后要显示它,你可以这样做。
Spanned sp = Html.fromHtml( getString(R.string.some_text));
tv.setText(sp);
现在,更实际的方式是实际使用Android的风格。
您需要创建多个TextView
,每个都有自己的样式,这样您就可以对文本的确切外观进行大量控制。
例如,这是一个你可以做类似的布局。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Creating a Title for your layout. -->
<TextView
style="@style/TextAppearance.AppCompat.Title" <!-- Title Style -->
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Create stickers for Gboard on Google Play"
/>
<!-- Creating a subheader for your layout. -->
<TextView
style="@style/TextAppearance.AppCompat.Caption" <!-- Caption Style -->
android:id="@+id/subheader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="01 September 2017"
/>
</LinearLayout>
对于您拥有的每种不同格式,您需要创建一个新的TextView
,并应用正确的样式。
我建议坚持使用@style/TextAppearance.AppCompat...
下的任何内容,因为这会为您提供一个非常好的文本大小/重量的起点。
您可以使用Title
,Caption
,Body2
,Body1
等内容。
然后在路上,当你有更多使用样式的经验时,你可以开始创建自己的。
例如,假设我希望我的所有标题都是RED
。您首先在styles.xml
<style name="myTitleStyle" parent="TextAppearance.AppCompat.Title">
<item name="android:textColor">@color/red</item>
</style>
然后你可以将它用作以前的样式。
<!-- Creating a Title for your layout. -->
<TextView
style="@style/myTitleStyle" <!-- myTitleStyle Style -->
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Create stickers for Gboard on Google Play"
/>