介绍
这篇文章将为大家详细讲解有关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 nullAndroid如何实现可以展开的TextView