对于一些文本展示类需求,经常会要求设置最大展示行数(maxLines),当文本长度大于要展示的最大内容时出现省略号,同时根据是否出现省略号做一些其他操作,比如显示"全文"等字眼,然后要求点击全文查看全部内容。这个时候就需要判断文本是否已经溢出最大展示量,下面提供自己的一种实现方法,这里在布局文件中设置TextView的最大行数为5,android:maxLines=5。

实现:

Layout layout = ((TextView) holder.getView(R.id.content)).getLayout();if (layout != null) {int lineCount = layout.getLineCount();//奇葩的小米note2居然会返回大于5(最大行数)的值if (lineCount > 5) {//小米note2的兼容处理holder.setVisibility(R.id.content_showfull, View.VISIBLE);} else {int ellipsisCount = layout.getEllipsisCount(lineCount - 1);//小米note2下返回0if (ellipsisCount > 0) {holder.setVisibility(R.id.content_showfull, View.VISIBLE);} else {holder.setVisibility(R.id.content_showfull, View.GONE);}}} else {ViewTreeObserver observer = holder.getView(R.id.content).getViewTreeObserver();if (observer.isAlive()) {observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {@Overridepublic boolean onPreDraw() {Layout layout = ((TextView) holder.getView(R.id.content)).getLayout();if (layout != null) {int lineCount = layout.getLineCount();if (lineCount > 5) {holder.setVisibility(R.id.content_showfull, View.VISIBLE);} else {int ellipsisCount = layout.getEllipsisCount(lineCount - 1);if (ellipsisCount > 0) {holder.setVisibility(R.id.content_showfull, View.VISIBLE);} else {holder.setVisibility(R.id.content_showfull, View.GONE);}}} else {holder.setVisibility(R.id.content_showfull, View.GONE);}try {(holder.getView(R.id.content).getViewTreeObserver()).removeOnPreDrawListener(this);} catch (Exception e) {e.printStackTrace();}return true;}});}}


更多相关文章

  1. 小米上市,小菜带你聊聊小米
  2. Android消息推送:第三方消息推送平台详细解析
  3. android 文件存储调试细节(小米系统)
  4. Android(安卓)消息推送:第三方消息推送平台 详细解析
  5. Android(安卓)API个人库的建设V1.0 【UI相关】
  6. android webview与h5交互时所遇到的坑
  7. java后台程序员转android 《三》之 集成腾讯云 云直播 直播推流
  8. Android(安卓)Studio2.1.3之后在小米手机安装应用报错
  9. android 判断手机为小米

随机推荐

  1. linux下mysql的root密码忘记,怎么改root密
  2. MySQL SET,ENUM类型数据小结
  3. mysql主从同步报slave_sql_running:no的
  4. 从模型到控制器并返回到模型的数据
  5. 使navicat可以通过SSH连接MySQL数据库
  6. 使用了mysql数据库的软件在别的没有安装
  7. MySQL5.7免安装版配置详细教程
  8. 如果有多个作者[重复],我怎么能阻止PHP显
  9. mysql利用st_distance函数查询附近的点的
  10. SQL按数字排序并保持分组