有点懒啊 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

    评论

报告相同问题?

悬赏问题

  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 vue2登录调用后端接口如何实现