(四十八)Android TextView中文字通过SpannableString来设置超链接、颜色、字体等属性
1、程序结构图
2、MainActivity.java中的代码
package com.example.setlinkdemo; import java.io.IOException; import org.xmlpull.v1.XmlPullParserException; import android.app.Activity; import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.XmlResourceParser; import android.os.Bundle; import android.text.Html; import android.text.SpannableString; import android.text.Spanned; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.text.style.TextAppearanceSpan; import android.view.View; import android.widget.TextView; public class MainActivity extends Activity { private TextView tv_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_content = (TextView) this.findViewById(R.id.tv_content); setLink(); } public void setLink() { // TODO Auto-generated method stub // 创建一个 SpannableString对象 SpannableString sp = new SpannableString( Html.fromHtml(getString(R.string.set_account_check))); sp.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { // TODO Auto-generated method stub startActivity(new Intent(MainActivity.this, TestActivity.class)); } }, 11, 15, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); ColorStateList csl = null; XmlResourceParser xpplinkcolor = getResources().getXml( R.color.link_color); try { csl = ColorStateList.createFromXml(getResources(), xpplinkcolor); } catch (XmlPullParserException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } sp.setSpan( new TextAppearanceSpan("monospace", android.graphics.Typeface.NORMAL, (int) tv_content .getTextSize(), csl, csl), 11, 15, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); tv_content.setText(sp); // 不添加这一句,超链接不能点击 tv_content.setMovementMethod(LinkMovementMethod.getInstance()); } }
3、TestActivity.java中的代码
package com.example.setlinkdemo; import android.app.Activity; import android.os.Bundle; public class TestActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
4、link_color.xml文件中的代码
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#0099cc"/> <!-- pressed --> <item android:state_focused="true" android:color="#0099cc"/> <!-- focused --> <item android:color="#0099cc"/> <!-- default --> </selector>
6、strings.xml文件中的代码
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">SetLinkDemo</string> <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> <string name="set_account_check">继续进行意味着您已同意服务协议</string> </resources>
7、AndroidManifest.xml文件中的代码
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.setlinkdemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".TestActivity" > </activity> </application> </manifest>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。