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;/* *@author: ZhengHaibo *web: blog.csdn.net/nuptboyzhb *mail: zhb931706659@126.com *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);}//@SuppressLint("DrawAllocation")@Overrideprotected 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);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubUri 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