读书人

Android自定义控件超链接文本LinkText

发布时间: 2012-09-04 14:19:30 作者: rapoo

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

读书人网 >Android

热点推荐