亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

如何在Android中使用顯示全文折疊控件

發布時間:2021-05-17 17:22:24 來源:億速云 閱讀:198 作者:Leah 欄目:移動開發

本篇文章為大家展示了如何在Android中使用顯示全文折疊控件,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:background="@color/color_white" >
 <TextView
 android:id="@+id/desc_tv"
 
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:gravity="center_vertical" />
 <TextView
 android:id="@+id/desc_op_tv"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_below="@+id/desc_tv"
 android:gravity="center_vertical"
 android:singleLine="true"
 android:text="@string/quan_wen"
 android:textColor="#5f897b"
 android:textSize="16sp"
 android:visibility="gone" />
</RelativeLayout>

很簡單,上面的TextView顯示主要的文本內容,下面的就是折疊的時候點擊的。

下面是自定義。

package xxx;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.TextView.BufferType;
import xxx.R;
/**
 * 查看全文控件
 */
public class CollapsibleTextView extends LinearLayout implements View.OnClickListener {
 private static final int COLLAPSIBLE_STATE_NONE = 0;// 不顯示
 private static final int COLLAPSIBLE_STATE_SHRINKUP = 1;// 顯示收起
 private static final int COLLAPSIBLE_STATE_SPREAD = 2;// 顯示全文
 private int mState = COLLAPSIBLE_STATE_SPREAD;
 private static final String COLLAPSIBLE_STATE_SHRINKUP_TEXT = "收起";
 private static final String COLLAPSIBLE_STATE_SPREAD_TEXT = "全文";
 private TextView mText;
 /**
 * @return Returns the mText.
 */
 public TextView getmText() {
 return mText;
 }
 public int getmState() {
 return mState;
 }
 public void setmState(int mState) {
 this.mState = mState;
 }
 private TextView mTextTip;
 private changeState changeStateCallBack;
 private boolean isNeedLayout;
 private int maxLineCount = 8;
 private final Handler handler = new Handler() {
 @Override
 public void dispatchMessage(Message msg) {
  if (mText.getLineCount() <= maxLineCount) {
  // 行數不足不做處理
  mState = COLLAPSIBLE_STATE_NONE;
  mText.setMaxLines(Integer.MAX_VALUE);
  mTextTip.setVisibility(View.GONE);
  }
  else {
  switch (mState) {
  case COLLAPSIBLE_STATE_SPREAD:
   // 全文狀態
   mText.setMaxLines(maxLineCount);
   mTextTip.setVisibility(View.VISIBLE);
   mTextTip.setText(COLLAPSIBLE_STATE_SPREAD_TEXT);
   break;
  case COLLAPSIBLE_STATE_SHRINKUP:
   // 收起狀態
   mText.setMaxLines(Integer.MAX_VALUE);
   mTextTip.setVisibility(View.VISIBLE);
   mTextTip.setText(COLLAPSIBLE_STATE_SHRINKUP_TEXT);
   break;
  default:
   // 除非發生不可知狀態,一般不會執行到這個
   mState = COLLAPSIBLE_STATE_NONE;
   mText.setMaxLines(Integer.MAX_VALUE);
   mTextTip.setVisibility(View.GONE);
   break;
  }
  }
 }
 };
 public CollapsibleTextView(Context context) {
 this(context, null);
 initView();
 }
 public CollapsibleTextView(Context context, AttributeSet attrs) {
 super(context, attrs);
 initView();
 }
 @SuppressLint("NewApi")
 public CollapsibleTextView(Context context, AttributeSet attrs, int defStyle) {
 super(context, attrs, defStyle);
 initView();
 }
 private void initView() {
 View view = inflate(getContext(), R.layout.collapsible_textview, this);
 view.setPadding(0, -1, 0, 0);
 mText = (TextView) view.findViewById(R.id.desc_tv);
 mTextTip = (TextView) view.findViewById(R.id.desc_op_tv);
 mTextTip.setOnClickListener(this);
 }
 /**
 * 設置文本
 * 
 * @param charSequence
 * @param bufferType
 */
 public final void setText(CharSequence charSequence, BufferType bufferType) {
 isNeedLayout = true;
 mState = COLLAPSIBLE_STATE_SPREAD;
 mText.setText(charSequence, bufferType);
 }
 /**
 * 設置文本
 * 
 * @param charSequence
 */
 public final void setText(CharSequence charSequence) {
 isNeedLayout = true;
 mText.setText(charSequence);
 }
 @Override
 public void onClick(View v) {
 isNeedLayout = true;
 if (mState == COLLAPSIBLE_STATE_SPREAD) {
  // 如果是全文狀態,就改成收起狀態
  mState = COLLAPSIBLE_STATE_SHRINKUP;
  requestLayout();
 }
 else if (mState == COLLAPSIBLE_STATE_SHRINKUP) {
  // 如果是收起狀態,就改成全文狀態
  mState = COLLAPSIBLE_STATE_SPREAD;
  requestLayout();
 }
 if (null != changeStateCallBack) {
  changeStateCallBack.changeFlag(v);
 }
 }
 @Override
 protected void onLayout(boolean changed, int l, int t, int r, int b) {
 super.onLayout(changed, l, t, r, b);
 if (isNeedLayout) {
  isNeedLayout = false;
  handler.sendMessage(Message.obtain());
 }
 }
 public int getMaxLineCount() {
 return maxLineCount;
 }
 public void setMaxLineCount(int maxLineCount) {
 this.maxLineCount = maxLineCount;
 }
 public changeState getChangeStateCallBack() {
 return changeStateCallBack;
 }
 public void setChangeStateCallBack(changeState changeStateCallBack) {
 this.changeStateCallBack = changeStateCallBack;
 }
 public interface changeState {
 public void changeFlag(View v);
 }
}

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

上述內容就是如何在Android中使用顯示全文折疊控件,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

永州市| 陇川县| 蕉岭县| 赣榆县| 怀来县| 肇源县| 晴隆县| 望谟县| 上林县| 洪江市| 百色市| 济宁市| 彭山县| 乐昌市| 大埔县| 睢宁县| 迭部县| 金阳县| 玉山县| 东丽区| 青川县| 兴国县| 定西市| 安阳市| 阿克苏市| 高清| 城固县| 泰兴市| 汤阴县| 五指山市| 尚义县| 罗源县| 儋州市| 芒康县| 盐池县| 中西区| 墨竹工卡县| 怀柔区| 丘北县| 信宜市| 凉城县|