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

TextView设置连接的方式

时间:2015-08-04 21:11:35      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:textview   链接   

1.设置TextView的autoLink属性值
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/text_main_webBaidu" 
            android:autoLink="web"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/text_main_telBaidu" 
            android:autoLink="phone"/>
    </LinearLayout>

2.识别html代码
   <TextView
        android:id="@+id/tvHtml"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
       <span style="white-space:pre">	</span>// html识别链接
	tvHtml = (TextView) findViewById(R.id.tvHtml);

	String value = "<html><a href='http://www.baidu.com'>百度一下</a>(注意这里的URL地址必须加http:协议)<br />"
			+ "联系方式:<a href='tel://010-59928888'>010-59928888</a></html>";

	// 若打开,与html识别起冲突
	// tvHtml.setAutoLinkMask(Linkify.ALL);
	tvHtml.setMovementMethod(LinkMovementMethod.getInstance());
	tvHtml.setText(Html.fromHtml(value));

3.SpannableStringBuilder手动设置连接

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

        // span手动识别链接
	tvSpan = (TextView) findViewById(R.id.tvSpan);
		
	value = "[百度一下]\r\n客服电话:[010-59928888]";

	// 若打开,仍起作用
	// tvSpan.setAutoLinkMask(Linkify.ALL);
	tvSpan.setMovementMethod(LinkMovementMethod.getInstance());

	SpannableStringBuilder builder = new SpannableStringBuilder(value);

	int indexStart = value.indexOf("[");
	int indexEnd = 0;
	while (indexStart != -1) {
		indexEnd = value.indexOf("]", indexStart);
		
		builder = builder.delete(indexEnd, indexEnd + 1);
		builder = builder.delete(indexStart, indexStart + 1);
		indexEnd--;
		
		value = builder.toString();

		final String temp = value.substring(indexStart, indexEnd);

		if (temp.equals("百度一下")) {
			builder.setSpan(new ClickableSpan() {
				@Override
				public void onClick(View widget) {
					Toast.makeText(MainActivity.this, temp,
							Toast.LENGTH_SHORT).show();

					String url = "http://www.baidu.com";
					Intent intent = new Intent(Intent.ACTION_VIEW);
					intent.setData(Uri.parse(url));
					startActivity(intent);
				}
			}, indexStart, indexEnd, 0);

		}

		if (temp.equals("010-59928888")) {
			builder.setSpan(new ClickableSpan() {
				@Override
				public void onClick(View widget) {
					String url = "tel://010-59928888";
					Intent intent = new Intent(Intent.ACTION_VIEW);
					intent.setData(Uri.parse(url));
					startActivity(intent);
					Toast.makeText(MainActivity.this, temp,
							Toast.LENGTH_SHORT).show();

				}
			}, indexStart, indexEnd, 0);
		}

		indexStart = value.indexOf("[", indexEnd);
	}

	tvSpan.setText(builder, BufferType.SPANNABLE);

版权声明:本文为博主原创文章,未经博主允许不得转载。

TextView设置连接的方式

标签:textview   链接   

原文地址:http://blog.csdn.net/userqiaohaibin/article/details/47281267

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