必须是通过post方式否则没效果的
holder.comment.post(new Runnable() {
@Override
public void run() {
if(isShrink(holder.comment)||holder.comment.getLineCount()>4){
holder.showAll.setVisibility(View.VISIBLE);
holder.showAll.setImageResource(R.drawable.indicate_down);
holder.showAll.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(isShrink(holder.comment)){
holder.comment.setMaxLines(100);
holder.showAll.setImageResource(R.drawable.indicate_up);
}else{
holder.comment.setMaxLines(4);
holder.showAll.setImageResource(R.drawable.indicate_down);
}
}
});
}else{
holder.showAll.setVisibility(View.GONE);
}
}
});
<pre name="code" class="java"> /**
* 判断textview是否收缩
* @param tv
* @return
*/
private boolean isShrink(TextView v){
if(android.os.Build.VERSION.SDK_INT>=11){
if((((int) measureTextLength((TextView) v) + 0.5f) + ((TextView) v).getPaddingLeft() + ((TextView) v)
.getPaddingRight()) / ((TextView) v).getWidth() > 4&&v.getLineCount()==4){
return true;
}else
return false;
}else{
int lines = v.getLineCount();
int lineHeight = v.getLineHeight();
int expandHeight = lineHeight * lines;
int currentHeight = v.getMeasuredHeight();
if(currentHeight < expandHeight)
return true;
else return false;
}
}