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

本文介绍如何使用TextView的setEllipsize属性实现文字展示的收缩和展开效果。通过设置maxLines和在点击事件中切换setEllipsize及setSingleLine属性,可以实现点击按钮显示所有内容或限制显示指定行数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在很多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;
    @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展开显示全部的功能了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值