Android如何实现可以展开的TextView

  介绍

这篇文章将为大家详细讲解有关Android如何实现可以展开的TextView,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体内容如下

原理是通过点击的时候设置setMaxLines (lineNum)来实现:

public  class  ExpandableTextView  extends  TextView  {,   ,private  static  int  MIN_LINE_NUM =, 2,,   ,private  static  int  MAX_LINE_NUM =, 20,,   ,private  int  lineNum =, MIN_LINE_NUM;,   ,private  boolean  mIsExpanded =,假的,,   ,Bitmap  bitmapDown;   ,Bitmap  bitmapUp;   ,int  w h,,   ,/* *点击事件listener  */,   ,private  OnClickListener  mOnClickListener;   ,   ,public  ExpandableTextView (Context 上下文,AttributeSet  attrs), {,   超级才能(上下文,attrs);,   初始化才能(上下文,attrs);,   }大敌;   ,   ,private  void  init (Context 上下文,AttributeSet  attrs), {,   setMaxLines才能(lineNum),,   时间=bitmapDown 才能;BitmapFactory.decodeResource (getresource (),, R.drawable.update_detail_down),,   时间=bitmapUp 才能;BitmapFactory.decodeResource (getresource (),, R.drawable.update_detail_up),,   时间=w 才能;bitmapDown.getWidth (), +, (int), context.getResources () .getDimension (R.dimen.expand_textview_right);,   时间=h 才能;bitmapDown.getHeight (), +, (int), context.getResources () .getDimension (R.dimen.expand_textview_bottom);,   ,,   OnClickListener super.setOnClickListener才能(new  (), {,   ,,@Override    ,,public  void  onClick (View  v), {,   ,,,if  (lineNum ==, MIN_LINE_NUM), {,   ,,,,lineNum =, MAX_LINE_NUM;,   ,,,,setMaxLines (lineNum),,   ,,,},else  {,   ,,,,lineNum =, MIN_LINE_NUM;,   ,,,,setMaxLines (lineNum),,   ,,,},   ,,,if  (mOnClickListener  !=, null), {,   ,,,,mOnClickListener.onClick (v),,   ,,,},   ,,},   ,,});   }大敌;   ,   ,@Override    ,public  void  setOnClickListener (OnClickListener 侦听器),{,   if 才能;(! isClickable ()), {,   ,,setClickable(真正的),,   ,,},   mOnClickListener 才能=,侦听器,,   }大敌;   ,   ,@Override    ,public  void  setMaxLines (int  maxlines), {,   super.setMaxLines才能(maxlines);,   ,   if 才能;(lineNum ==, MAX_LINE_NUM), {,   ,,mIsExpanded =,真的,,   ,,},else  {,   ,,mIsExpanded =,假的,,   ,,},   }大敌;   ,   ,public  boolean 扩大(),{,   mIsExpanded; return 才能;   }大敌;   ,   ,@Override    ,protected  void  onDraw (Canvas 画布),{,   if 才能;(getLineCount (), & lt;=, MIN_LINE_NUM), {,   ,,super.onDraw(画布);,   ,,,返回;   ,,},   if 才能;(lineNum ==, MIN_LINE_NUM), {,   ,,canvas.drawBitmap (bitmapDown, getWidth(),安康;w,获得(),安康;h, null),,   ,,},else  {,   ,,canvas.drawBitmap (bitmapUp, getWidth(),安康;w,获得(),安康;h, null),,   ,,},   super.onDraw才能(画布);,   }大敌;   ,   ,   ,public  void  setMaxLine (int 线),{,   lineNum =,才能行,,   setMaxLines才能(线),,   }大敌;   }

这样来写布局:

& lt; RelativeLayout  xmlns: android=? http://schemas.android.com/apk/res/android",,   ,xmlns:工具=癶ttp://schemas.android.com/tools",   ,android: layout_width=癿atch_parent",   ,android: layout_height=癿atch_parent",   ,android:背景=? FFFFFF",在,   ,   ,& lt; TextView    android:才能id=癅 + id/detail_action",   android:才能输入textColor=? 000000“,   android:才能textSize=?1 sp",   android:才能layout_width=皐rap_content",   android:才能layout_height=皐rap_content",   android:才能layout_alignParentTop=皌rue",   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

Android如何实现可以展开的TextView