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

首頁 > 系統 > Android > 正文

可伸縮的textview詳解(推薦)

2019-12-12 03:14:34
字體:
來源:轉載
供稿:網友

在Android原生的TextView的基礎上,可收縮/擴展的TextView:PhilExpandableTextView。

實現原理:核心是控制TextView的max lines。在TextView的初始化階段但尚未繪制出View的時候,使用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 i = 0; i < 200; i++) {       str = str + i + " ";     }     final ExpandableTextView etv = (ExpandableTextView) findViewById(R.id.etv);     etv.setText(str);      Button btn = (Button) findViewById(R.id.btn);      btn.setOnClickListener(new OnClickListener() {        @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 lines;    private ExpandableTextView mExpandableTextView;    private boolean expandablestatus = false;    // 構造方法用兩個參數的   public ExpandableTextView(Context context, AttributeSet attrs) {     super(context, attrs);     mExpandableTextView = this;     init();    }    private void init() {     // 在view繪制之前的時候執行,在onDraw之前     ViewTreeObserver mViewTreeObserver = this.getViewTreeObserver();     mViewTreeObserver.addOnPreDrawListener(new OnPreDrawListener() {        @Override      public boolean onPreDraw() {         // 避免重復監聽         mExpandableTextView.getViewTreeObserver().removeOnPreDrawListener(this);         // 獲得內容行數         lines = getLineCount();          return true;       }     });     setExpandable(false);    }   // 是否展開或者收縮,   // true,展開;   // false,不展開    public void setExpandable(boolean isExpand) {     if (isExpand) {       setMaxLines(lines + 1);     } else      setMaxLines(MAX);      expandablestatus = isExpand;   }    public boolean getExpandablestatus() {     return expandablestatus;   }  }

以上這篇可伸縮的textview詳解(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平和县| 常州市| 阳高县| 广州市| 晋宁县| 稷山县| 临沧市| 明溪县| 罗田县| 涪陵区| 象山县| 吴忠市| 额敏县| 北辰区| 玛纳斯县| 长武县| 兰州市| 阿克苏市| 通辽市| 金沙县| 三门县| 喀喇| 和龙市| 商南县| 华宁县| 财经| 广水市| 景洪市| 阿勒泰市| 尼玛县| 洪洞县| 乌什县| 阿图什市| 屏东市| 广昌县| 抚顺县| 普宁市| 梓潼县| 永昌县| 波密县| 六盘水市|