首页 > 系统 > Android > 正文

Android实现可以展开的TextView

2019-10-22 18:22:51
字体:
来源:转载
供稿:网友

本文实例为大家分享了一个可以展开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

代码一个可以展开的TextView

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表