这篇文章将为大家详细讲解有关Android如何实现可以展开的TextView,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
成都创新互联公司主营贵州网站建设的网络公司,主营网站建设方案,成都App定制开发,贵州h5小程序设计搭建,贵州网站营销推广欢迎贵州等地区企业咨询
具体内容如下
原理是通过点击的时候设置 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 = false; Bitmap bitmapDown; Bitmap bitmapUp; int w, h; /** 点击事件listener */ private OnClickListener mOnClickListener; public ExpandableTextView(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs); } private void init(Context context, AttributeSet attrs) { setMaxLines(lineNum); bitmapDown = BitmapFactory.decodeResource(getResources(), R.drawable.update_detail_down); bitmapUp = BitmapFactory.decodeResource(getResources(), 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); super.setOnClickListener(new OnClickListener() { @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 listener) { if (!isClickable()) { setClickable(true); } mOnClickListener = listener; } @Override public void setMaxLines(int maxlines) { super.setMaxLines(maxlines); if (lineNum == MAX_LINE_NUM) { mIsExpanded = true; } else { mIsExpanded = false; } } public boolean isExpanded() { return mIsExpanded; } @Override protected void onDraw(Canvas canvas) { if (getLineCount() <= MIN_LINE_NUM) { super.onDraw(canvas); return; } if (lineNum == MIN_LINE_NUM) { canvas.drawBitmap(bitmapDown, getWidth() - w, getHeight() - h, null); } else { canvas.drawBitmap(bitmapUp, getWidth() - w, getHeight() - h, null); } super.onDraw(canvas); } public void setMaxLine(int line) { lineNum = line; setMaxLines(line); } }
这样来写Layout:
效果图:
关于“Android如何实现可以展开的TextView”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。