本篇文章給大家分享的是有關(guān)Android中怎么利用TextView實(shí)現(xiàn)微信可折疊效果,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
成都創(chuàng)新互聯(lián)是一家專業(yè)提供洱源企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為洱源眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
1.自定義的View:
import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewTreeObserver; import android.widget.LinearLayout; import android.widget.TextView; /** * 可折疊的textview */ public class ExpandTextView extends LinearLayout { public static final int DEFAULT_MAX_LINES = 3; private TextView contentText; private TextView textPlus; private int showLines; private ExpandStatusListener expandStatusListener; private boolean isExpand; public ExpandTextView(Context context) { super(context); initView(); } public ExpandTextView(Context context, AttributeSet attrs) { super(context, attrs); initAttrs(attrs); initView(); } public ExpandTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initAttrs(attrs); initView(); } private void initAttrs(AttributeSet attrs) { TypedArray typedArray = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.ExpandTextView, 0, 0); try { showLines = typedArray.getInt(R.styleable.ExpandTextView_showLines, DEFAULT_MAX_LINES); }finally { typedArray.recycle(); } } private void initView() { setOrientation(LinearLayout.VERTICAL); LayoutInflater.from(getContext()).inflate(R.layout.layout_magic_text, this); contentText = (TextView) findViewById(R.id.contentText); if(showLines > 0){ contentText.setMaxLines(showLines); } textPlus = (TextView) findViewById(R.id.textPlus); textPlus.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { String textStr = textPlus.getText().toString().trim(); if("全文".equals(textStr)){ contentText.setMaxLines(Integer.MAX_VALUE); textPlus.setText("收起"); setExpand(true); }else{ contentText.setMaxLines(showLines); textPlus.setText("全文"); setExpand(false); } //通知外部狀態(tài)已變更 if(expandStatusListener != null){ expandStatusListener.statusChange(isExpand()); } } }); } public void setText(final CharSequence content){ //在開始繪制contentText內(nèi)容時(shí),進(jìn)行監(jiān)聽 contentText.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { // 避免重復(fù)監(jiān)聽 contentText.getViewTreeObserver().removeOnPreDrawListener(this); //獲取當(dāng)前文本的行數(shù) int linCount = contentText.getLineCount(); if(linCount > showLines){ if(isExpand){ contentText.setMaxLines(Integer.MAX_VALUE); textPlus.setText("收起"); }else{ contentText.setMaxLines(showLines); textPlus.setText("全文"); } textPlus.setVisibility(View.VISIBLE); }else{ textPlus.setVisibility(View.GONE); } return true; } }); contentText.setText(content); } public void setExpand(boolean isExpand){ this.isExpand = isExpand; } public boolean isExpand(){ return this.isExpand; } public void setExpandStatusListener(ExpandStatusListener listener){ this.expandStatusListener = listener; } public interface ExpandStatusListener{ void statusChange(boolean isExpand); } @Override public boolean onTouchEvent(MotionEvent event) { return textPlus.dispatchTouchEvent(event); } }
2.相關(guān)布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/contentText" android:textSize="18sp" android:textColor="#000000" android:layout_width="match_parent" android:layout_height="wrap_content" android:text=""/> <TextView android:id="@+id/textPlus" android:textSize="18sp" android:textColor="#666666" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:text=""/> </LinearLayout>
3.自定義屬性
<declare-styleable name="ExpandTextView"> <attr name="showLines" format="integer"/> </declare-styleable>
4.開始引用
<mo.yumf.com.myviews.ExpandTextView android:id="@+id/expandTextView" android:layout_width="match_parent" android:layout_height="wrap_content" app:showLines="4"/>
以上就是Android中怎么利用TextView實(shí)現(xiàn)微信可折疊效果,小編相信有部分知識點(diǎn)可能是我們?nèi)粘9ぷ鲿姷交蛴玫降摹OM隳芡ㄟ^這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前名稱:Android中怎么利用TextView實(shí)現(xiàn)微信可折疊效果
本文URL:http://chinadenli.net/article10/gogsgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站、商城網(wǎng)站、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)