本文實例為大家分享了一個可以展開的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>
效果圖:
	
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。
新聞熱點
疑難解答