91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Android應用中實現一個可收縮與擴展的TextView

發布時間:2020-11-30 17:41:05 來源:億速云 閱讀:152 作者:Leah 欄目:移動開發

這期內容當中小編將會給大家帶來有關怎么在Android應用中實現一個可收縮與擴展的TextView,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

實現原理:核心是控制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;
 }
 
}

上述就是小編為大家分享的怎么在Android應用中實現一個可收縮與擴展的TextView了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莆田市| 梁平县| 无棣县| 科技| 阿荣旗| 太谷县| 陵水| 贞丰县| 宁陵县| 饶河县| 临泽县| 洞口县| 礼泉县| 乌兰浩特市| 武夷山市| 冕宁县| 阿合奇县| 北川| 雷波县| 思南县| 闽清县| 讷河市| 平陆县| 自治县| 屯留县| 隆昌县| 临邑县| 伊通| 龙南县| 临西县| 汤阴县| 黎城县| 金门县| 北流市| 平定县| 信宜市| 华亭县| 宁晋县| 林口县| 长沙县| 耿马|