国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android中TextView實現超過固定行數顯示“...展開全部”

2019-10-22 18:19:52
字體:
來源:轉載
供稿:網友

前言

大家都知道,如果要讓TextView只顯示一行,多出部分用省略號代替的話非常容易,只需要為xml文件中的TextView控件添加android:singleLine="true"即可,那么如果我想讓它顯示多行的時候應該怎么做呢?

廢話不多說,先看效果圖:

展開前:

android,textview展開,textview,展開收起,textview點擊展開收起

展開后:

android,textview展開,textview,展開收起,textview點擊展開收起

示例代碼:

工具類:

 /** * 設置textView結尾...后面顯示的文字和顏色 * @param context 上下文 * @param textView textview * @param minLines 最少的行數 * @param originText 原文本 * @param endText 結尾文字 * @param endColorID 結尾文字顏色id * @param isExpand 當前是否是展開狀態 */ public void toggleEllipsize(final Context context,    final TextView textView,    final int minLines,    final String originText,    final String endText,    final int endColorID,    final boolean isExpand) { if (TextUtils.isEmpty(originText)) {  return; } textView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver  .OnGlobalLayoutListener() {  @Override  public void onGlobalLayout() {  if (isExpand) {   textView.setText(originText);  } else {   int paddingLeft = textView.getPaddingLeft();   int paddingRight = textView.getPaddingRight();   TextPaint paint = textView.getPaint();   float moreText = textView.getTextSize() * endText.length();   float availableTextWidth = (textView.getWidth() - paddingLeft - paddingRight) *    minLines - moreText;   CharSequence ellipsizeStr = TextUtils.ellipsize(originText, paint,    availableTextWidth, TextUtils.TruncateAt.END);   if (ellipsizeStr.length() < originText.length()) {   CharSequence temp = ellipsizeStr + endText;   SpannableStringBuilder ssb = new SpannableStringBuilder(temp);   ssb.setSpan(new ForegroundColorSpan(context.getResources().getColor     (endColorID)),    temp.length() - endText.length(), temp.length(),    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);   textView.setText(ssb);   } else {   textView.setText(originText);   }  }  if (Build.VERSION.SDK_INT >= 16) {   textView.getViewTreeObserver().removeOnGlobalLayoutListener(this);  } else {   textView.getViewTreeObserver().removeGlobalOnLayoutListener(this);  }  } }); }

使用比較簡單,參數列表都有說明。

例子:

boolean isExpandDescripe = false;// 初始展開狀態為false,即未展開;Onclick() {...  // 給textView設置點擊事件:  case R.id.tv_info_node_describe:  if (isExpandDescripe) {   isExpandDescripe = false;   tv_info_node_describe.setMaxLines(2);// 收起  } else {   isExpandDescripe = true;   tv_info_node_describe.setMaxLines(Integer.MAX_VALUE);// 展開  }  textViewSpanUtil.toggleEllipsize(context,   tv_info_node_describe, 2,   text,   "展開全部",R.color.gray_discovery_ababab, isExpandDescripe);  break;...}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉中市| 通州市| 文化| 陆川县| 泌阳县| 扶沟县| 合肥市| 普格县| 弥渡县| 牡丹江市| 潼南县| 吉隆县| 景泰县| 会昌县| 恩施市| 永寿县| 兴宁市| 左云县| 张掖市| 湖州市| 开远市| 堆龙德庆县| 永清县| 哈巴河县| 静海县| 泽库县| 道孚县| 宜兴市| 五峰| 三穗县| 合山市| 四子王旗| 本溪市| 铜山县| 石河子市| 佛坪县| 青龙| 浦城县| 通城县| 志丹县| 泰安市|