本文实例为大家分享了一个可以展开的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;
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:
效果图:
代码:一个可以展开的TextView
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



