android ellipsize的使用


在TextView 和 EditText中,可以使用ellipsize来设置文字溢出隐藏,如:“一段很长的文本...”


用法如下:

在xml中

android:ellipsize = "end"   省略号在结尾

android:ellipsize = "start"   省略号在开头

android:ellipsize = "middle" 省略号在中间

android:ellipsize = "marquee" 跑马灯

最好加一个约束android:singleline = "true" 或者 android:maxLines="1"


当然也可以用代码语句

tv.setEllipsize(TextUtils.TruncateAt.valueOf("END"));

tv.setEllipsize(TextUtils.TruncateAt.valueOf("START"));

tv.setEllipsize(TextUtils.TruncateAt.valueOf("MIDDLE"));

tv.setEllipsize(TextUtils.TruncateAt.valueOf("MARQUEE"));

最好再加一个约束tv.setSingleLine(true);


注:EditText中不支持marquee模式!


对于多行的时候,比如4行,想设置溢出隐藏,可是发现只最多只能显示两行,不知是否android的bug。


<TextView

android:maxLines="4"

android:ellipsize="end"

......

/>






Android 中,`android:ellipsize="marquee"` 用于实现文本的跑马灯效果,类似于 HTML 中的 `marquee` 功能,不过其实现需要满足一定条件。 ### 实现方法 要在 Android 中实现 `ellipsize` 的 `marquee` 效果,可在布局文件中为 `TextView` 或其他支持文本显示的控件添加相应属性。示例代码如下: ```xml <TextView android:id="@+id/marquee_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是一段很长的文本,用于演示跑马灯效果。" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:focusable="true" android:focusableInTouchMode="true" android:scrollHorizontally="true" /> ``` 在上述代码中,各属性的作用如下: - `android:singleLine="true"`:确保文本只显示一行,这是跑马灯效果的必要条件。 - `android:ellipsize="marquee"`:指定文本超出控件宽度时以跑马灯效果显示。 - `android:marqueeRepeatLimit="marquee_forever"`:设置跑马灯滚动的次数,`marquee_forever` 表示无限循环滚动。 - `android:focusable="true"` 和 `android:focusableInTouchMode="true"`:使控件能够获取焦点,跑马灯效果只有在控件获得焦点时才会显示。 - `android:scrollHorizontally="true"`:允许文本水平滚动。 ### 相关介绍 - **适用场景**:`marquee` 效果适用于需要显示较长文本,但控件宽度有限的场景,如新闻标题滚动、公告信息展示等。 - **局限性**:该效果依赖于控件获取焦点,在多个 `TextView` 同时使用时,只有获得焦点的控件才会滚动。若要实现多个控件同时滚动,需要自定义 `TextView` 并重写 `isFocused()` 方法,使其始终返回 `true`。示例代码如下: ```java import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; public class AlwaysMarqueeTextView extends TextView { public AlwaysMarqueeTextView(Context context) { super(context); } public AlwaysMarqueeTextView(Context context, AttributeSet attrs) { super(context, attrs); } public AlwaysMarqueeTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean isFocused() { return true; } } ``` 在布局文件中使用自定义的 `AlwaysMarqueeTextView`: ```xml <com.example.AlwaysMarqueeTextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是自定义的跑马灯文本。" android:singleLine="true" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever" android:scrollHorizontally="true" /> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值