介绍
这期内容当中小编将会给大家带来有关怎么在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了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。