首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

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

2012-09-04 
Android自定义控件超链接文本LinkTextView的实现Android自定义控件LinkTextView的实现@author:郑海波 http

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

Android自定义控件LinkTextView的实现

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

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

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

如图:

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

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

 

热点排行