设置TextView 的URL链接地址颜色以及触发事件方法
2012-01-12 22:34
711 查看
public void setTextViewHtmlLink(TextView tv , String assertHtmlFile){
String htmltxt = null;
try{
if (htmltxt == null) {
InputStream is = this.getAssets().open(assertHtmlFile,AssetManager.ACCESS_BUFFER);
htmltxt = new String(Util.IS2ByteArray(is));
}
tv.setText(Html.fromHtml(htmltxt));
tv.setMovementMethod(LinkMovementMethod.getInstance());
CharSequence text = tv.getText();
if (text instanceof Spannable){
int end = text.length();
Spannable sp = (Spannable)tv.getText();
URLSpan[] urls = sp.getSpans( 0 , end, URLSpan.class );
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.clearSpans(); // should clear old spans
for (URLSpan url : urls){
MyURLSpan myURLSpan = new MyURLSpan(url.getURL());
style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(new ForegroundColorSpan(Color.rgb(244, 115, 33)), sp.getSpanStart(url),sp.getSpanEnd(url),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// style.setSpan(new BackgroundColorSpan(Color.rgb(244, 115, 33)), sp.getSpanStart(url),sp.getSpanEnd(url),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
tv.setText(style);
}
}catch(Exception e){
tv.setText("");
}
}
private class MyURLSpan extends ClickableSpan {
private String mUrl;
MyURLSpan(String url) {
mUrl = url;
}
@Override
public void onClick(View widget) {
// Toast.makeText(LoginActivity.this, mUrl, Toast.LENGTH_LONG).show();
//send intent
// widget.setBackgroundColor(Color.parseColor("#00000000"));
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/html");
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{mUrl});
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Get the Tullett Support");
LoginActivity.this.startActivity(Intent.createChooser(sendIntent, "Email via:"));
}
}
String htmltxt = null;
try{
if (htmltxt == null) {
InputStream is = this.getAssets().open(assertHtmlFile,AssetManager.ACCESS_BUFFER);
htmltxt = new String(Util.IS2ByteArray(is));
}
tv.setText(Html.fromHtml(htmltxt));
tv.setMovementMethod(LinkMovementMethod.getInstance());
CharSequence text = tv.getText();
if (text instanceof Spannable){
int end = text.length();
Spannable sp = (Spannable)tv.getText();
URLSpan[] urls = sp.getSpans( 0 , end, URLSpan.class );
SpannableStringBuilder style = new SpannableStringBuilder(text);
style.clearSpans(); // should clear old spans
for (URLSpan url : urls){
MyURLSpan myURLSpan = new MyURLSpan(url.getURL());
style.setSpan(myURLSpan,sp.getSpanStart(url),sp.getSpanEnd(url),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
style.setSpan(new ForegroundColorSpan(Color.rgb(244, 115, 33)), sp.getSpanStart(url),sp.getSpanEnd(url),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// style.setSpan(new BackgroundColorSpan(Color.rgb(244, 115, 33)), sp.getSpanStart(url),sp.getSpanEnd(url),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
tv.setText(style);
}
}catch(Exception e){
tv.setText("");
}
}
private class MyURLSpan extends ClickableSpan {
private String mUrl;
MyURLSpan(String url) {
mUrl = url;
}
@Override
public void onClick(View widget) {
// Toast.makeText(LoginActivity.this, mUrl, Toast.LENGTH_LONG).show();
//send intent
// widget.setBackgroundColor(Color.parseColor("#00000000"));
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/html");
sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{mUrl});
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Get the Tullett Support");
LoginActivity.this.startActivity(Intent.createChooser(sendIntent, "Email via:"));
}
}
相关文章推荐
- TextView加链接的一些方法以及设置个别文字格式
- android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
- android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
- android在代码中四种设置控件(以及TextView的文字颜色)背景颜色的方法
- TextView设置指定部分文字改变颜色,和指定部分文字点击事件
- android textview可以设置文字颜色 部分文字点击事件处理
- Android 关于TextView中,设置指定部分文字改变颜色,和指定部分文字点击事件
- android:为TextView添加样式——下划线,颜色,设置链接样式及前背景色
- Android中动态设置TextView的颜色的方法
- Android一个TextView设置多种颜色的2种高效方法
- Android 在TextView中设置不同的字体、颜色、链接等
- android TextView的字体颜色设置的多种方法
- textView 的设置文本中某一文字的字体颜色以及图文混排
- TextView设置不同的点击事件与不同的颜色(kotlin版)
- 安卓开发 给textview添加点击事件并设置点击颜色
- textview设置多种不同的字体颜色和点击事件
- iOS 导航条透明(以及自定义颜色)的方法,去掉导航条底部黑线,随着tableView滚动设置导航条变色
- 【Android基础】TextView的字体颜色设置的多种方法
- android TextView的字体颜色设置的多种方法(转)
- TextView的字体颜色设置的多种方法