关闭

字符串截取符合TextView自定义样式

标签: textviewitem样式字符串截取
593人阅读 评论(0) 收藏 举报
分类:

最近在做项目时ListView的Item的样式,如下图:
这里写图片描述

主要要求是:当文本内容为一行是,显示在一行高度,时间和点赞图标在下一行右侧,当字符串外宽度大于一行时,则显示在第二行,但但是,第二行在文本距右侧时间固定距离时显示省略号打点结束。

我的解决方案是,采用两个TextView显示,当为一行时,显示在第一个文本框,为两行时,把字符串截取,第二行显示在第二个文本框,固定第二行文本框的

 android:singleLine="true"
  android:ellipsize="end"

主要思路就是这样,但是一直在困扰自己的事字符串截取问题:

原理Android SDK 自带的截取字符的方法:

经过自己修改符合自己的样式:

    /**
     * 截取文本相对于画板来说第一行,第二行的文本
     * @param inText
     * @param lineWidth
     * @param paint
     * @return 返回第一行、第二行的文本
     */
    public static String[] CurStringToTwoPartByTextPaint(String inText, int lineWidth, TextPaint paint) {

        if (inText != null && inText.length() > 0 && paint != null) {

            String[] strs = new String[2];
            int widthPostion = paint.breakText(inText, true, lineWidth, null);

            strs[0] = inText.substring(0, widthPostion);

            if (widthPostion < inText.length()) {

                strs[1] = inText.substring(widthPostion, inText.length());

            }
            else {

                strs[1] = "";
            }

            return strs;
        }

        return null;
    }

在使用时如下:

String  title  []  =  GlobalInfo.CurStringToTwoPartByTextPaint(titleStr.toString(),m.title.getMeasuredWidth(),m.title.getPaint());


 m.title.setText(title[0].toString());

 m.title_two.setText(title[1].toString());
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:19530次
    • 积分:439
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    最新评论