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

首頁 > 系統 > Android > 正文

可伸縮的textview詳解(推薦)

2019-10-23 18:33:12
字體:
來源:轉載
供稿:網友

在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,伸縮

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


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吉林省| 霞浦县| 塘沽区| 大兴区| 吉首市| 色达县| 准格尔旗| 常州市| 榆中县| 太仆寺旗| 扶绥县| 巴里| 名山县| 布尔津县| 苏尼特右旗| 新昌县| 江阴市| 舒城县| 襄垣县| 阳新县| 额敏县| 建瓯市| 英超| 蓬安县| 东乌珠穆沁旗| 廊坊市| 海南省| 永定县| 塔河县| 卓资县| 汾阳市| 米脂县| 灵宝市| 海城市| 望城县| 扶余县| 潢川县| 屏南县| 同江市| 泌阳县| 凤台县|