码迷,mamicode.com
首页 > 其他好文 > 详细

TextView的实用技巧

时间:2015-04-23 17:36:50      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:textview   指定位置点击   

有的时候,我们会碰到一个这样的需求,在一个段文字上,点击某个部分跳转到其他页面,或者说拨打电话或者其他操作,有人会想这个简单啊,用一个几个TextView进行布局,然后给要做操作的TextView添加点击事件,这个确实可以,但是如果要你使用一个TextView怎么实现呢?

今天就告诉大家如果在一个TextView上实现不同的位置有不同的点击事件,不同的位置样式不一样。

这里要使用到SpannableString这个类,这个类很强大,它可以给指定部分文字添加超链接、字体、颜色、大小、下划线、粗体斜体、删除线、背景色等等属性,具体大家可以百度查找,下面见代码,注释很详细:

package com.fanxl.testandroid;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
	
	private TextView main_tv_link;

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

	@SuppressLint("NewApi") 
	private void initView() {
		main_tv_link = (TextView) findViewById(R.id.main_tv_link);
		//创建一个SpannableString对象,把要编辑的字体传进去
		SpannableString msp = new SpannableString("请进入我的账户查看充值成功的金额");
		//这里要设置这个方法,否则点击不可用
		main_tv_link.setMovementMethod(LinkMovementMethod.getInstance());
		//这里是给自定字段添加指定属性和样式,这里主要是添加点击事件和下划线样式,是通过TextClickableSpan完成的
		//第二个和第三个参数分别是指定起始和结束的位置范围,这里就是我的账户
		msp.setSpan(new TextClickableSpan("我的账户"), 3, 7, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
		//最后一步,就直接设置给TextView即可, 由于SpannableString实现了CharSequence接口,所以可以直接设置
        main_tv_link.setText(msp);
	}
	
	//TextClickableSpan继承自ClickableSpan,我们主要重写onClick方法来处理我们自己的逻辑代码,这里就只是弹出一个吐司
	//updateDrawState方法重写主要是改变字体颜色样式
	public class TextClickableSpan extends ClickableSpan {
		
		private String text;
		
		public TextClickableSpan(String text){
			this.text=text;
		}

        @Override
        public void updateDrawState(TextPaint ds) {
        	super.updateDrawState(ds);
        	ds.setColor(Color.parseColor("#00ABF1"));
        	//如果不需要下划线,可以设置false
        	//ds.setUnderlineText(false);
        }

        @Override
        public void onClick(View view) {
        	Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT).show();
        }
    }
	
}

最后的效果:

技术分享

TextView的实用技巧

标签:textview   指定位置点击   

原文地址:http://blog.csdn.net/fanxl10/article/details/45222909

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!