您的位置:首页 > 其它

TextView限定行数,点击按钮显示所有内容

2017-11-22 18:17 585 查看
在很多app上能看到文字展示收缩效果,点击展示全部,再点击收缩,显示指定行数的效果,如图:

默认状态:



保持显示不动,展开全部:



实现基本的TextView点击显示所有内容;一开始实现效果很low,基本是局部隐藏显示,这样很不好,后来看到了TextView的setEllipsize属性,一个TextView实现展示收缩功能,保持现实的不变,无卡顿.下面分享下实现代码:

一 xml布局文件

<TextView
android:id="@+id/tv_details"       android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="#FF2043AC"
android:maxLines="2"
android:text="这是一个TextView展开效果演示demo,点击展开按钮实现文字全部显示,点击收缩按钮实现文字省略显示"/>
<ImageView
android:id="@+id/iv_details"
android:layout_below="@+id/tv_details"
android:layout_width="30dp"
android:layout_height="30dp"      android:layout_centerHorizontal="true"
android:src="@mipmap/details_open" />


android:maxLines=”2”这儿可以根据自己需要设置默认显示的行数;

二 activity中的代码:

public class MainActivity extends AppCompatActivity {
private Boolean flag = true;
private TextView tv_details;
private ImageView iv_details;

4000
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_details = (ImageView) findViewById(R.id.iv_details);
tv_details = (TextView) findViewById(R.id.tv_details);
iv_details.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (flag) {
flag = false;
tv_details.setEllipsize(null); // 展开
tv_details.setSingleLine(flag);
iv_details.setImageResource(R.mipmap.details_close);
} else {
flag = true;
tv_details.setEllipsize(TextUtils.TruncateAt.END); // 收缩
tv_details.setMaxLines(2);
iv_details.setImageResource(R.mipmap.details_open);
}
}
});
}
}


设置一个Boolean类型的标志,当点击展开时调用:

tv_details.setEllipsize(null);
tv_details.setSingleLine(flag);


则全部显示,设置setEllipsize为null,设置setSingleLine为FALSE;

当收缩时:

tv_details.setEllipsize(TextUtils.TruncateAt.END);
tv_details.setMaxLines(2);


则收缩显示,设置setEllipsize为TextUtils.TruncateAt.END,设置setSingleLine为默认显示的行数; 这样就可以实现TextView展开显示全部的功能了;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐