温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android如何实现可以展开的TextView

发布时间:2021-04-16 12:29:30 来源:亿速云 阅读:268 作者:小新 栏目:移动开发

这篇文章将为大家详细讲解有关Android如何实现可以展开的TextView,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体内容如下

原理是通过点击的时候设置 setMaxLines(lineNum)来实现:

public class ExpandableTextView extends TextView {   private static int MIN_LINE_NUM = 2;   private static int MAX_LINE_NUM = 20;   private int lineNum = MIN_LINE_NUM;   private boolean mIsExpanded = false;   Bitmap bitmapDown;   Bitmap bitmapUp;   int w, h;   /** 点击事件listener */   private OnClickListener mOnClickListener;     public ExpandableTextView(Context context, AttributeSet attrs) {    super(context, attrs);    init(context, attrs);   }     private void init(Context context, AttributeSet attrs) {    setMaxLines(lineNum);    bitmapDown = BitmapFactory.decodeResource(getResources(), R.drawable.update_detail_down);    bitmapUp = BitmapFactory.decodeResource(getResources(), R.drawable.update_detail_up);    w = bitmapDown.getWidth() + (int) context.getResources().getDimension(R.dimen.expand_textview_right);    h = bitmapDown.getHeight() + (int) context.getResources().getDimension(R.dimen.expand_textview_bottom);        super.setOnClickListener(new OnClickListener() {     @Override     public void onClick(View v) {      if (lineNum == MIN_LINE_NUM) {       lineNum = MAX_LINE_NUM;       setMaxLines(lineNum);      } else {       lineNum = MIN_LINE_NUM;       setMaxLines(lineNum);      }      if (mOnClickListener != null) {       mOnClickListener.onClick(v);      }     }    });   }     @Override   public void setOnClickListener(OnClickListener listener) {    if (!isClickable()) {     setClickable(true);    }    mOnClickListener = listener;   }     @Override   public void setMaxLines(int maxlines) {    super.setMaxLines(maxlines);      if (lineNum == MAX_LINE_NUM) {     mIsExpanded = true;    } else {     mIsExpanded = false;    }   }     public boolean isExpanded() {    return mIsExpanded;   }     @Override   protected void onDraw(Canvas canvas) {    if (getLineCount() <= MIN_LINE_NUM) {     super.onDraw(canvas);     return;    }    if (lineNum == MIN_LINE_NUM) {     canvas.drawBitmap(bitmapDown, getWidth() - w, getHeight() - h, null);    } else {     canvas.drawBitmap(bitmapUp, getWidth() - w, getHeight() - h, null);    }    super.onDraw(canvas);   }       public void setMaxLine(int line) {    lineNum = line;    setMaxLines(line);   }  }

这样来写Layout:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:background="#FFFFFF" >     <TextView    android:id="@+id/detail_action"    android:textColor="#000000"    android:textSize="11sp"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_alignParentTop="true"    android:layout_marginRight="8dip"    android:drawablePadding="4dip"    android:paddingBottom="10dip"    android:paddingTop="10dip"    android:singleLine="true"    android:text="sdfkljsfiosjdfiosfjsiofjsdifsd" />     <com.example.view.ExpandableTextView    android:id="@+id/textview"    android:layout_width="100dp"    android:layout_height="wrap_content"    android:layout_below="@id/detail_action"    android:lineSpacingExtra="4dip"    android:paddingBottom="-40dip"    android:paddingRight="48dip"    android:text="adfsfsfewrwerwerwerqRWgdffdfdfERSAFSDFSDFSDd"    android:layout_marginTop="-5dip"    android:textColor="#000000" >   </com.example.view.ExpandableTextView>          <TextView    android:id="@+id/detail_action1"    android:textColor="#000000"    android:textSize="11sp"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_below="@id/textview"    android:layout_marginRight="8dip"    android:drawablePadding="4dip"    android:paddingBottom="10dip"    android:paddingTop="10dip"    android:singleLine="true"    android:text="sdfkljsfiosjdfiosfjsiofjsdifsd" />    </RelativeLayout>

效果图:

Android如何实现可以展开的TextView

关于“Android如何实现可以展开的TextView”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI