欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android顯示全文折疊控件使用方法詳解

 更新時間:2018年11月28日 16:51:14   作者:carbs_wang  
這篇文章主要為大家詳細介紹了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"
 style="@style/font2"
 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:
   // 全文狀態(tài)
   mText.setMaxLines(maxLineCount);
   mTextTip.setVisibility(View.VISIBLE);
   mTextTip.setText(COLLAPSIBLE_STATE_SPREAD_TEXT);
   break;
  case COLLAPSIBLE_STATE_SHRINKUP:
   // 收起狀態(tài)
   mText.setMaxLines(Integer.MAX_VALUE);
   mTextTip.setVisibility(View.VISIBLE);
   mTextTip.setText(COLLAPSIBLE_STATE_SHRINKUP_TEXT);
   break;
  default:
   // 除非發(fā)生不可知狀態(tài),一般不會執(zhí)行到這個
   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) {
  // 如果是全文狀態(tài),就改成收起狀態(tài)
  mState = COLLAPSIBLE_STATE_SHRINKUP;
  requestLayout();
 }
 else if (mState == COLLAPSIBLE_STATE_SHRINKUP) {
  // 如果是收起狀態(tài),就改成全文狀態(tài)
  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);
 }
}

點擊展開后重新繪制根據狀態(tài)值觸發(fā)。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Android跨應用啟動實例詳解

    Android跨應用啟動實例詳解

    這篇文章主要介紹了 Android跨應用啟動實例詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • Android控件之GridView用法實例分析

    Android控件之GridView用法實例分析

    這篇文章主要介紹了Android控件之GridView用法,通過繪制九宮格的實例形式分析了GridView可滾動網格的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • Android中截取當前屏幕圖片的實例代碼

    Android中截取當前屏幕圖片的實例代碼

    該篇文章是說明在Android手機或平板電腦中如何實現(xiàn)截取當前屏幕的功能,并把截取的屏幕保存到SDCard中的某個目錄文件夾下面。實現(xiàn)的代碼如下:
    2013-08-08
  • Android實戰(zhàn)教程第六篇之一鍵鎖屏應用問題解決

    Android實戰(zhàn)教程第六篇之一鍵鎖屏應用問題解決

    這篇文章主要為大家詳細介紹了Android一鍵鎖屏應用開發(fā)過程中出現(xiàn)問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android熱修復及插件化原理示例詳解

    Android熱修復及插件化原理示例詳解

    這篇文章主要為大家介紹了Android熱修復及插件化原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Android Jetpack組件中LiveData的優(yōu)劣

    Android Jetpack組件中LiveData的優(yōu)劣

    LiveData是Jetpack組件的一部分,更多的時候是搭配ViewModel來使用,相對于Observable,LiveData的最大優(yōu)勢是其具有生命感知的,換句話說,LiveData可以保證只有在組件(?Activity、Fragment、Service)處于活動生命周期狀態(tài)的時候才會更新數據
    2023-04-04
  • Android實現(xiàn)ImageView陰影和圖層效果

    Android實現(xiàn)ImageView陰影和圖層效果

    這篇文章主要為大家詳細介紹了Android實現(xiàn)ImageView陰影和圖層效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android 分享功能的實現(xiàn)

    Android 分享功能的實現(xiàn)

    這篇文章主要介紹了 Android 分享功能的實現(xiàn)的相關資料,需要的朋友可以參考下
    2017-06-06
  • Android-Service實現(xiàn)手機壁紙自動更換

    Android-Service實現(xiàn)手機壁紙自動更換

    這篇文章主要為大家詳細介紹了Android-Service實現(xiàn)手機壁紙自動更換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • AndroidStudio3 支持 Java8 了請問你敢用嗎

    AndroidStudio3 支持 Java8 了請問你敢用嗎

    Google 發(fā)布了 AS 3.0,以及一系列的 Support 包,有意思的新東西挺多,AS3里面有一個亮眼的特性就是支持J8。接下來通過本文給大家分享AndroidStudio3 支持 Java8 的相關內容,感興趣的朋友一起看看吧
    2017-11-11

最新評論