仿微信朋友圈,文字展开全文,全文收起功能

简单操作4步即可实现文字展开收起功能:

1.布局写2个Textview 一个是内容 一个是按钮(收起和全文)

<TextView

android:layout_marginTop="@dimen/x64"

android:id="@+id/tv_content"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginBottom="8dp"

android:alpha="0.85"

android:ellipsize="end"

android:text="内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容"

android:textColor="@android:color/black"

android:textSize="14sp"/>

 

<TextView

android:id="@+id/tv_expand_or_fold"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="全文"

android:textColor="@color/colorPrimaryDark"

android:textSize="14sp"/>

 

2.设置 最高显示几行、折叠、展开、状态、变量

private final int MAX_LINE_COUNT = 3;//最大显示行数

 

private final int STATE_COLLAPSED = 2;//折叠状态

 

private final int STATE_EXPANDED = 3;//展开状态

 

private int state;

 

3.调用View中getViewTreeObserver()这个方法设置监听OnPreDrawListener

interface ViewTreeObserver.OnPreDrawListener 当一个视图树将要绘制时,所要调用的回调函数的接口类

 

tvContent.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {

@Override

public boolean onPreDraw() {

//这个回掉会调用多次,获取完行数后记得注销监听

tvContent.getViewTreeObserver().removeOnPreDrawListener(this);

//如果内容显示的行数大于最大显示行数

if (tvContent.getLineCount() > MAX_LINE_COUNT) {

tvContent.setMaxLines(MAX_LINE_COUNT);//设置最大显示行数

expandOrFold.setVisibility(View.VISIBLE);//显示“全文”

expandOrFold.setText("全文");

state = STATE_COLLAPSED;

}else{

//内容不多,小于最大显示行数,隐藏展开的textview

expandOrFold.setVisibility(View.GONE);

}

return true;

}

});

 

4.设置查看更多内容展开折叠的点击处理

//全文和收起的点击事件

expandOrFold.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Log.i(TAG, "onClick: "+state);

if (state == STATE_COLLAPSED) {

tvContent.setMaxLines(Integer.MAX_VALUE);

expandOrFold.setText("收起");

state = 3;

} else if (state == STATE_EXPANDED) {

tvContent.setMaxLines(MAX_LINE_COUNT);

expandOrFold.setText("全文");

state = 2;

}

}

});

 

写的不好,请多多指教!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥不可及zzz

我会用心写更多自己的经验。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值