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",

TextView中ellipsize属性焦点异常处理_第1张图片

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

方案二:

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

TextView中ellipsize属性焦点异常处理_第2张图片

更多相关文章

  1. Android APK常驻内存解决方案
  2. android 横屏重启的解决方案
  3. Android开发网站被封解决方案
  4. 《Android音频焦点机制深入理解》
  5. Android取消EditText自动获取焦点
  6. Android开发错误——Android Studio中遇到过的错误问题与解决方
  7. 最新版 Android SDK 无法获取SDK包 的解决方案
  8. Android TV webview禁止自动获取焦点 遥控器按键监听 dispatchKe
  9. Android处理屏幕旋转时的解决方案

随机推荐

  1. Android中Launcher实例
  2. Android(安卓)Studio配置Android(安卓)An
  3. Android(安卓)教程之实现动作感应技术
  4. 安卓视频播放器 一行代码快速实现视频播
  5. android多媒体
  6. Android(安卓)Studio使用教程(一)
  7. Android(安卓)View measure流程详解
  8. Android2.2 API 中文文档系列(1)
  9. Android(安卓)sdk 3.0 sdk3.1 sdk3.2 平
  10. Android(安卓)Studio 初体验