问题:TextView根据宽度截取字符串
解决办法:
public String getSubStringWidth(String str,int width){
if(TextUtils.isEmpty(str) || width <= 0){
return "";
}
//字符串长度
int length = str.length();
Paint paint = new Paint();
//根据宽度得到字符数量
int measurennums = paint.breakText(str, true, width, null);
//字符数量和长度比较
if(measurennums>length){
measurennums = length;
}
return str.substring(0, measurennums);
}
没找到方法之前的处理:截取字符串 区分汉字和字母数字,没用到,留存参考
public String getSubString(String str, int num) {
if(TextUtils.isEmpty(str)){
return null;
}
int length = str.length();//字符串长度
int newLength = getLength(str);//含有字符新的字符串长度
//含有字符的再处理
if(newLength > length){
if(num>length){
num = length;
}
// 截取字符串的带字符长度
num = getLength(str.substring(0,num));
}
if (num < 0) {
num = 1;
}
int end = num;
if (end > length) {
end = length;
}
return str.substring(0,end);
}
public int getLength(String str){
int len = 0;
char[] chars = str.toCharArray();
for (int i = 0; i < chars.length; i++) {
//判断汉字字符
if((int)chars[i]>=0x4e00 && (int)chars[i]<=0x9fa5){
len++;
}else{
len+=2;
}
}
return len ;
}
仅供参考,如有问题欢迎指正