有点懒啊 2015-12-25 17:56 采纳率: 0%
浏览 2195

给ListView添加HeaderView,为什么获取不到HeaderView中控件的宽高呢

我给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();

            按理说这三种方法应该都能拿到,为什么前两个拿不到呢?
  • 写回答

2条回答 默认 最新

  • Exploring1024 2015-12-26 04:22
    关注

    主要是View的绘制流程问题,所以在onCreate方法中获取返回为0

    评论

报告相同问题?

悬赏问题

  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码