android:ellipsize 被用于处理文本过长时候的显示,默认有5种方案,以“happy new year”为例简单说明:

android:ellipsize="start" ———— 省略开头,“...w year”,

android:ellipsize="end" ———— 省略结尾,“happy...”,

android:ellipsize="middle" ———— 省略中间,“ha...ear”,

android:ellipsize="marquee" ———— 跑马灯,没有获取焦点时省略结尾,但与“end”不同,只有两个点,“happy..”,获取焦点后开始滚动,默认滚动三次,

android:ellipsize="none" ———— 不做处理。

与之对应的也可以在代码里面设置:

setEllipsize(TextUtils.TruncateAt.START);

setEllipsize(TextUtils.TruncateAt.END);

setEllipsize(TextUtils.TruncateAt.MIDDLE);

setEllipsize(TextUtils.TruncateAt.MARQUEE);

使用注意事项:

a. android:ellipsize="marquee"需要同时设置android:singleLine="true",而不是android:maxLines="1"。

b.系统在英文环境下,android:ellipsize="marquee" 获取焦点前只会显示一个点。

c.默认显示3个点,选中显示跑马灯效果的处理。

方案一:

监听OnFocusChangeListener,获取焦点前设置“end”,获取焦点后设置"marquee",

一般情况下可以这样处理,但是如果是在子View里面这样写,会导致父View焦点和选中状态异常。所以涉及到焦点问题时,推荐第二种方案。

方案二:

重写TextView的setSelected方法,isSelected()为true时设置为"marquee",否则设置“end”。

更多相关文章

  1. android 流量统计实现思路
  2. 获取Android设备电池电量状态
  3. Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
  4. Android与webview JS 键值编码差异
  5. android 获取应用列表 点击打开应用
  6. Android(安卓)adb获取屏幕分辨率
  7. Listview
  8. EditText
  9. Android(安卓)深入解析selector

随机推荐

  1. 009. 回文数 | Leetcode题解
  2. 漫画 | 小公司卧薪尝胆三年,意外拿到美团o
  3. Alibaba Java开发手册都出到了泰山版,我扶
  4. Android统一处理断网
  5. 漫画 | 夜深了,程序员的电脑却没关……
  6. 漫画 | 如何向外行解释产品经理频繁更改
  7. 013. 罗马数字转整数 | Leetcode题解
  8. 真有小伙伴不知道浮点数如何转二进制吗?
  9. centos 基本命令1
  10. 二线城市的程序员活得好吗?