我给listview添加了 HeaderView,HeaderView填充的布局里面包含了一个TextView,起名为tv_image,我想获取tv_image的宽高,试了三种办法,前两种都不成功而最后一个成功这是为什么呢?
第一种办法,通过视图树监听 onLayout方法不成功
mHeaderView.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mWidth = tv_image.getHeight();
mHeight = tv_image.getWidth();
tv_image.getViewTreeObserver()
.removeGlobalOnLayoutListener(this);
}
});
获取为0
2第二种办法 ,通过在屏幕获取焦点的时候获取,不成功
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
super.onWindowFocusChanged(hasFocus);
mWidth = tv_image.getHeight();
mHeight = tv_image.getHeight();
获取为0
3第三种办法,最简单测量一下成功了
mHeaderView.measure(0, 0);
mWidth = tv_image.getMeasuredHeight();
mHeight = tv_image.getMeasuredHeight();
按理说这三种方法应该都能拿到,为什么前两个拿不到呢?