900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 仿微信朋友圈 文字展开全文 全文收起功能

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

时间:2022-10-06 22:35:00

相关推荐

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

简单操作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

interfaceViewTreeObserver.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;

}

}

});

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。