当前位置: 代码迷 >> Android >> Android自定义控件超链接文本LinkTextView的兑现
  详细解决方案

Android自定义控件超链接文本LinkTextView的兑现

热度:51   发布时间:2016-05-01 14:56:12.0
Android自定义控件超链接文本LinkTextView的实现

Android自定义控件LinkTextView的实现

@author:郑海波 http://blog.csdn.net/nuptboyzhb/

相关博客:http://blog.csdn.net/nuptboyzhb/article/details/7880916

功能:设计一个TextView,当点击该TextView时,会打开相应的链接。

如图:

 

LinkTextView类的定义:

[java]code

 

package com.example.njupt.zhb.linktext;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.net.Uri;import android.view.View;import android.view.View.OnClickListener;import android.util.AttributeSet;/* [email protected]: ZhengHaibo   *web:     blog.csdn.net/nuptboyzhb *mail:    [email protected] *2012-8-31  Nanjing njupt */public class LinkTextView extends View implements OnClickListener{    String UrlText;    Activity ParentActivity;    Paint paint=new Paint();    int color=Color.RED;	public LinkTextView(Context context) {		super(context);		setClickable(true);		this.setOnClickListener(this);		// TODO Auto-generated constructor stub	}	public LinkTextView(Context context,AttributeSet attrs){		super(context,attrs);		setClickable(true);		this.setOnClickListener(this);	}	[email protected]("DrawAllocation")	@Override	protected void onDraw(Canvas canvas){		super.onDraw(canvas);		paint.setAntiAlias(true);		paint.setStrokeWidth(1);		paint.setColor(color);		//canvas.drawLine(left, bottom, left+100, bottom, paint);		int width=getWidth();		int height=getHeight();		int textwidth=getTextWidth();		int x_pos=(int)((width-textwidth)/2);		height=(int)(height*0.67);		canvas.drawText(UrlText, x_pos, height, paint);		paint.setStrokeWidth(1);		paint.setColor(Color.BLUE);		canvas.drawLine(x_pos, height, textwidth+x_pos, height, paint);	}	@Override	public void onClick(View v) {		// TODO Auto-generated method stub		Uri uri = Uri.parse(UrlText);		Intent it = new Intent(Intent.ACTION_VIEW,uri);		ParentActivity.startActivity(it);		color=Color.BLACK;		this.invalidate();	}	public void setUrl(Activity ParentActivity,String text){		UrlText=text;		this.ParentActivity=ParentActivity;	}	private int getTextWidth(){		int len=UrlText.length();		return len*6;	}	}


LinkTextView的简单说明:

1.onDraw函数主要是将设置的字符串画出来,并且在字符串下面画一个下划线,看起来像一个链接

2.实现了OnClickListener接口,当用户点击链接时,通过启动一个Intent,在系统的浏览器中打开该链接。

LinkTextView的使用:

1.      布局文件:

 

    <com.example.njupt.zhb.linktext.LinkTextView        android:id="@+id/linktext"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/>


2.      MainActivity定义一个LinkTextView类的对象,并与布局文件相关联。

LinkTextView m_LinkTextView;m_LinkTextView=(LinkTextView)findViewById(R.id.linktext);


 3.      设置Url

 m_LinkTextView.setUrl(this,"http://blog.csdn.net/nuptboyzhb/");

4.      Manifest.xml上网权限

 

<uses-permission android:name="android.permission.INTERNET"></uses-permission>


 

项目下载地址:http://download.csdn.net/detail/nuptboyzhb/4540110

转载请声明:http://blog.csdn.net/nuptboyzhb/article/details/7930620

 

  相关解决方案