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


最近在做项目时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());
智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告