1,繪畫完成之前調用的,在這裏面可以獲取到行數,當然也可以獲取到寬高等信息。
ViewTreeObserver vto = mContent.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
if(mContent.getLineCount() == 1){
} else {
}
return false;
}
});
2,繪畫完成之後調用的,在這裏面可以獲取到行數,當然也可以獲取到寬高等信息。
mContent.setText(barModel.getContentTitle());
mContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mContent.getViewTreeObserver().removeGlobalOnLayoutListener(this);
if(mContent.getLineCount() == 1){
Log.e("TAG","---------"+mContent.getLineCount());
} else {
}
}
});
3,
使用post,繪制完成在調用getLineCount()
mContent.post(new Runnable() {
@Override
public void run() {
if(mContent.getLineCount() == 1){
mContent.setPadding(0,(int)mCwww.cdccgs.com?tResources().getDimension(R.dimen.space_12),0,0);
mReadNum.setPadding(0,0,0,(int)mCwww.cdccgs.com?tResources().getDimension(R.dimen.space_12));
mCollectionNum.setPadding(0,0,0,(int)mCwww.cdccgs.com?tResources().getDimension(R.dimen.space_12));
} else {
mContent.setPadding(0,0,0,0);
mReadNum.setPadding(0,0,0,0);
mCollectionNum.setPadding(0,0,0,0);
}
}
});
經過測試三種方案均可行,但是如果是listview中TextView,根據LineCount切換位置,會出現
TextView復用,導致TextView位置在滑動速度快的情況下位置瞬間混亂,采用第三種方案沒有此問題,至於采用前兩種方案出現問題的原因不得而知,有遇到這種情況的可以壹起探討壹下原因。