Android非常简单的TextView展开和收起,在列表中TextView文章展开全部和收起

我的效果图:

第一步:布局,非常简单一个TextView和一个checkBox复选框:

           

            

            
        

第二步:在Adapter适配器中写个逻辑。headTv(文字的TextView)/ch是展开和收起按钮
//展开文字

    final CheckBox ch = baseViewHolder.getView(R.id.check_zhankai);
    headTv.post(new Runnable() { //用post方法是因为当view绘制完获取信息,不然可能第一次获取不到正确的行数。
        @Override
        public void run() {
            dataBean.setMaxLines(headTv.getLineCount()); //保存一个最大行数,在集合对应的对象中
            if (headTv.getLineCount() > 5) {   //如果大于5行
                ch.setVisibility(View.VISIBLE);  //展开按钮显示
            } else {
                ch.setVisibility(View.GONE);   //否则,展开按钮隐藏
            }
        }
    });
    //当点击按钮发生改变
    ch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            dataBean.setCheckZK(isChecked); //这里在你的对象集合中记录一个状态值,防止滑动checkBox选中状态错乱
            if (isChecked) {
                ch.setText("收起");
                headTv.setMaxLines(dataBean.getMaxLines());
                headTv.postInvalidate();
            } else {
                headTv.setMaxLines(5);
                headTv.postInvalidate(); //刷新控件,不加的话,如果下拉刷新列表notifyDataSetChanged()的时候TextView会自动重绘
                ch.setText("全文");
            }
        }
    });
    ch.setChecked(dataBean.isCheckZK()); //随时释放选中状态

好了结束。是不是超级简单,如果想加点动画效果可以自己加属性动画。

你可能感兴趣的:(Android)