日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 显示全文折叠控件

發布時間:2024/4/15 Android 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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() {@Overridepublic 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);}@Overridepublic 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);}}@Overrideprotected 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 显示全文折叠控件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。