Android资源String中html标签的使用



作为Android程序媛一枚,入行不久,博客文章作为实际项目中遇到的一些心得总结,内容都是自己实现过的,也参考了很多别人的文章,在此不逐一列举了,同时咧,也希望能帮到有需要的人O(∩_∩)O哈!


轻量级样式标签


Android支持<b>(加粗)<i>(倾斜)<u>(下划线)等轻量级html标签,可直接在资源文件strings.xml中使用


strings.xml

<string name="hello_world">Hello world!</string>
<string name="hello_world01"><b>Hello world!</b></string>
<string name="hello_world02"><u>Hello world!</u></string>
<string name="hello_world03"><i>Hello world!</i></string>


activity_main.xml

<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="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world01"/>
    
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world02"/>
    
    <TextView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world03"/>

</LinearLayout>


MainActivity.java

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

}


实现效果如下:



2  使用转义html标签


能够直接使用的标签比较有限,若要实现其他效果,如改变字体颜色或者大小等,可使用转义html标签,或者接下来所述的CDDATA方法;

简单了解下转义标签,首先,定义转义字符串的原因有两个:

第一个原因是像“<”和“>”这类符号已经用来表示HTML标签,因此就不能直接当作文本中的符号来使用。

第二个原因是,有些字符在ASCII字符集中没有定义,因此需要使用转义字符串来表示。

例如:< 转义为 &lt;   > 转义为 &gt;   空格 转义为 &nbsp; 等等。。。其他可百度"html转义字符"


继上例strings.xml 注:将左尖括号替换为转义符&lt;

<string name="hello_world01">&lt;b>Hello world!&lt;/b></string>

MainActivity.java 注意设置字符串方法

TextView tvBold = (TextView) findViewById(R.id.tv01);
tvBold.setText(Html.fromHtml(getString(R.string.hello_world01)));


3 使用CDATA方法


据称该方法是比较推荐的,具体操作如下,许多html标签都可以使用,<h1>~<h6>,<a href=""></a>,<p>,还有设置字体大小如<big>,<small>等等。。。具体可以谷歌下哦O(∩_∩)O

strings.xml

<string name="textTest"><Data><![CDATA[ 
        <b>Hello</b><br/> 
        <font color="#ff0000"> world</font>!<br/>
        ]]></Data></string>

MainActivity.java

TextView tvTest= (TextView) findViewById(R.id.tv_test);
tvTest.setText(Html.fromHtml(getString(R.string.textTest)));


实现效果:



4 格式化替换


对于静态字符串中,某些一个或者多个地方可能是需要动态获取的,此时可使用此方法,免去了添加多个TextView的麻烦,并且可与上述改变文字样式的方法相结合使用,关于这点,只需先作格式化替换,再用上述Html.fromHtml(Str...)方法改变文字样式,即可实现想要的效果,详情可查看我的参考文章。

strings.xml

<string name="textTest">Tom%1$s就要%2$d岁了</string>

其中,s表示字符串类型,d表示数字类型...其他还有浮点型等并且可以设置显示格式,比如保留几位小数等。。。


activity_main.xml

<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="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/tv_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    
</LinearLayout>

MainActivity.java

TextView tvTest= (TextView) findViewById(R.id.tv_test);
tvTest.setText(String.format(getString(R.string.textTest), "明年",12));


实现效果:格式输出




Finally 参考文章

1)http://blog.csdn.net/wsywl/article/details/6555959


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值