最近在做项目时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());
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。