怎么在Android应用中实现一个可收缩与扩展的TextView

  介绍

这期内容当中小编将会给大家带来有关怎么在Android应用中实现一个可收缩与扩展的TextView,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强>实现原理:强核心是控制TextView的马克斯。在TextView的初始化阶段但尚未绘制出观点的时候,使用ViewTreeObserver,监听onPreDraw事件,获取TextView正常显示需要显示的总行数,但只给TextView设置最大运行的行数(小于总行数),从而造成TextView的收缩摘要效果,当用户通过按钮或其他方式扩展时候,把TextView的最大行数设置为正常显示完全的行数+ 1(+ 1是保持余量,避免不足)。

public  class  MainActivity  extends  Activity  {   ,private  String  str =,““   ,   ,@Override   ,protected  void  onCreate (Bundle  savedInstanceState), {   super.onCreate才能(savedInstanceState);   ,,setContentView (R.layout.activity_main);   ,   for 才能;(int 小姐:=,0;,小姐:& lt;, 200;,我+ +),{   ,,str =, str  +,小姐:+,“,“;   ,,}   final 才能ExpandableTextView  etv =, (ExpandableTextView), findViewById (R.id.etv);   etv.setText才能(str);   ,   Button 才能;btn =,(按钮),findViewById (R.id.btn);   ,   OnClickListener btn.setOnClickListener才能(new  (), {   ,   @Override。才能   ,,public  void  onClick (View  v), {   ,,,boolean  b =, etv.getExpandablestatus ();   ,   ,,,b =, ! b;   ,,,etv.setExpandable (b);   ,   ,,}   ,,});   ,   ,}   ,   }

PhilExpandableTextView。java:

package  com.ganchuanpu.ExpandableTextView;   ,   import  android.content.Context;   import  android.util.AttributeSet;   import  android.view.ViewTreeObserver;   import  android.view.ViewTreeObserver.OnPreDrawListener;   import  android.widget.TextView;   import  android.widget.Toast;   ,   public  class  ExpandableTextView  extends  TextView  {   ,   ,//最大行,默认显示3行   ,private  final  int  MAX =, 3;   ,//完全展开需要的行数   ,private  int ;   ,   ,private  ExpandableTextView  mExpandableTextView;   ,   ,private  boolean  expandablestatus =,假;   ,   ,//构造方法用两个参数的   ,public  ExpandableTextView (Context 上下文,AttributeSet  attrs), {   超级才能(上下文,attrs);   时间=mExpandableTextView 才能;;   ,,init ();   ,   ,}   ,   ,private  void  init (), {//才能,在视图绘制之前的时候执行,在onDraw之前   ViewTreeObserver 才能;mViewTreeObserver =, this.getViewTreeObserver ();   mViewTreeObserver.addOnPreDrawListener才能(new  OnPreDrawListener (), {   ,   @Override。才能   ,,public  boolean  onPreDraw (), {   ,,,//,避免重复监听   ,,,mExpandableTextView.getViewTreeObserver () .removeOnPreDrawListener(这个);   ,,,//,获得内容行数   ,,,lines =, getLineCount ();   ,   ,,,return 真实;   ,,}   ,,});   setExpandable才能(假);   ,   ,}   ,//是否展开或者收缩,   ,//真的,展开;   ,//假,不展开   ,   ,public  void  setExpandable (boolean  isExpand), {   if 才能;(isExpand), {   ,,setMaxLines (lines  +, 1);   },才能   ,,setMaxLines (MAX);   ,   时间=expandablestatus 才能;isExpand;   ,}   ,   ,public  boolean  getExpandablestatus (), {   return 才能;expandablestatus;   ,}   ,   }

上述就是小编为大家分享的怎么在Android应用中实现一个可收缩与扩展的TextView了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

怎么在Android应用中实现一个可收缩与扩展的TextView