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

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;
	}
}	


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值