美文网首页
一个自定义的Textview点击可以展开

一个自定义的Textview点击可以展开

作者: 宁静世界 | 来源:发表于2017-03-15 15:19 被阅读0次

需要自行准备两张图片资源

Paste_Image.png
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;
Drawable bitmapDown;
Drawable 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 = getResources().getDrawable(R.mipmap.down);
    bitmapUp = getResources().getDrawable(R.mipmap.up);
    bitmapDown.setBounds(0, 0, bitmapDown.getMinimumWidth(), bitmapDown.getMinimumHeight()); //设置边界
    bitmapUp.setBounds(0, 0, bitmapUp.getMinimumWidth(), bitmapUp.getMinimumHeight()); //设置边界
    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) {
        setCompoundDrawables(null, null, null, bitmapDown);
    } else {
        setCompoundDrawables(null, null,null , bitmapUp);
    }
    super.onDraw(canvas);
}


public void setMaxLine(int line) {
    lineNum = line;
    setMaxLines(line);
}
}

效果如下

展开前

Paste_Image.png

展开后

Paste_Image.png

相关文章

网友评论

      本文标题:一个自定义的Textview点击可以展开

      本文链接:https://www.haomeiwen.com/subject/cvwlnttx.html