十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這篇文章將為大家詳細(xì)講解有關(guān)Android如何實(shí)現(xiàn)可以展開的TextView,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)公司主營貴州網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都App定制開發(fā),貴州h5小程序設(shè)計(jì)搭建,貴州網(wǎng)站營銷推廣歡迎貴州等地區(qū)企業(yè)咨詢
具體內(nèi)容如下
原理是通過點(diǎn)擊的時(shí)候設(shè)置 setMaxLines(lineNum)來實(shí)現(xiàn):
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; /** 點(diǎn)擊事件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:
效果圖:
關(guān)于“Android如何實(shí)現(xiàn)可以展開的TextView”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。