同一个TextView不同文字的点击事件
2013-04-10 11:38
393 查看
最近有朋友问到同一个TextView的不同文字点击事件如何实现,由于之前自己做过这方面的东西,但没有把它整理出来,今天上班不是很忙,抽了点时间来整理一个demo,给大家分享一下。好了,废话不多说,上代码和效果图
下载地址链接:
http://download.csdn.net/detail/hap_gx/5241456
下面是点击的效果图:
下载地址链接:
http://download.csdn.net/detail/hap_gx/5241456
package com.example.textviewclick; import android.app.Activity; import android.os.Bundle; import android.text.Html; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.TextPaint; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.text.style.URLSpan; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { TextView mTextView2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.textview); mTextView2 = (TextView)findViewById(R.id.text2); /*********** 同一个TextView不同文字的点击事件*******/ StringBuilder actionText = new StringBuilder(); actionText .append("<a style=\"text-decoration:none;\" href='username'>" + "username:" + " </a>"); actionText .append("隐形人" + "<a style=\"color:blue;text-decoration:none;\" href='singstar'> " + " love" + "</a>"); actionText.append(" : \"" + "孙燕姿" + "\""); mTextView2.setText(Html.fromHtml(actionText.toString())); mTextView2.setMovementMethod(LinkMovementMethod .getInstance()); CharSequence text = mTextView2.getText(); int ends = text.length(); Spannable spannable = (Spannable) mTextView2.getText(); URLSpan[] urlspan = spannable.getSpans(0, ends, URLSpan.class); SpannableStringBuilder stylesBuilder = new SpannableStringBuilder(text); stylesBuilder.clearSpans(); // should clear old spans for (URLSpan url : urlspan) { TextViewURLSpan myURLSpan = new TextViewURLSpan(url.getURL()); stylesBuilder.setSpan(myURLSpan, spannable.getSpanStart(url), spannable.getSpanEnd(url), spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } mTextView2.setText(stylesBuilder); } private class TextViewURLSpan extends ClickableSpan { private String clickString; public TextViewURLSpan(String clickString) { this.clickString = clickString; } @Override public void updateDrawState(TextPaint ds) { ds.setColor(MainActivity.this.getResources().getColor(R.color.text_color)); ds.setUnderlineText(false); //去掉下划线 } @Override public void onClick(View widget) { if (clickString.equals("username")) { Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG) .show(); } else if (clickString.equals("singstar")) { Toast.makeText(getApplication(), clickString, Toast.LENGTH_LONG) .show(); } } } }
下面是点击的效果图:
相关文章推荐
- Android同一个TevtView显示不同颜色的文字,添加不同的点击事件。
- 同一个TextView内不同文字颜色、字体、事件可以不同
- 同一个TextView内不同文字颜色、字体、事件可以不同
- 为 TextView 的部分文字设置超链接样式并监听点击事件
- android:SpannableString的应用,TextView中某些文字的点击事件
- textview设置多种不同的字体颜色和点击事件
- Android TextView 部分文字变色添加点击事件
- Android在一个TextView设置不同样式的文字
- TextView设部分文字的点击事件
- 设置TextView部分文字下划线并响应点击事件(SpannableString)
- Android同一个TextView里响应多个区域点击事件
- 一个Text,设置不同的颜色,有颜色部分添加点击事件
- 关于一个Textview内的文字设置不同大小和颜色
- Android TextView实现不同字体颜色并添加点击事件
- android textview可以设置文字颜色 部分文字点击事件处理
- Android 关于TextView中,设置指定部分文字改变颜色,和指定部分文字点击事件
- android textview 部分文字点击事件
- EditText,TextView部分文字点击事件响应
- TextView中的部分文字自定义颜色和点击事件(类似新浪微博带颜色的可点击字体)
- 给一个TextView控件中的文字显示不同的颜色