您的位置:首页 > 其它

TextView的展开收缩功能的实现;(及判断TextView是否超出)

2016-03-22 18:37 405 查看
1.实现代码如下:

//textview的最大行数根据需要改动
tv.setSelected(false);
tv.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
//当内容只有一行时,如果不做此拦截,会发生内容抖动现象
if(!isOverFlowed(tv)){
return;
}
if(tv.isSelected()){ //收起
tv.setSelected(false);
tv.setMaxLines(1);
} else{ //展开
tv.setMaxLines(10);
tv.setSelected(true);
}
}
});


2.注意事项:xml文件中,textview控件的 android:paddingBottom,android:paddingTop要足够大,不然会发生内容抖动现象;另外,如果文字显示需要不全用省略号显示,不要忘记添加 android:ellipsize="end"属性;

3.判断TextView的内容宽度是否超出其可用宽度的实现方法。借鉴自:http://www.hankcs.com/program/mobiledev/android-textview-determine-whether-excess-of-ellipsis.html

/**
* 判断TextView的内容宽度是否超出其可用宽度
* @param tv
* @return
*/
public static boolean isOverFlowed(TextView tv) {
int availableWidth = tv.getWidth() - tv.getPaddingLeft() - tv.getPaddingRight();
Paint textViewPaint = tv.getPaint();
float textWidth = textViewPaint.measureText(tv.getText().toString());
if (textWidth > availableWidth) {
return true;
} else {
return false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: