OnGlobalLayoutListener获得一个视图的高度
来源:互联网 发布:淘宝市场需求分析 编辑:程序博客网 时间:2024/06/10 15:11
转载http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/0731/1640.html
我们知道在oncreate中View.getWidth和View.getHeight无法获得一个view的高度和宽度,这是因为View组件布局要在onResume回调后完成。所以现在需要使用getViewTreeObserver().addOnGlobalLayoutListener()来获得宽度或者高度。这是获得一个view的宽度和高度的方法之一。
OnGlobalLayoutListener 是
interface ViewTreeObserver.OnGlobalFocusChangeListener
当在一个视图树中的焦点状态发生改变时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnGlobalLayoutListener
当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnPreDrawListener
当一个视图树将要绘制时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnScrollChangedListener
当一个视图树中的一些组件发生滚动时,所要调用的回调函数的接口类
interface ViewTreeObserver.OnTouchModeChangeListener
当一个视图树的触摸模式发生改变时,所要调用的回调函数的接口类
其中,我们可以利用OnGlobalLayoutListener来获得一个视图的真实高度。
1
2
3
4
5
6
7
8
9
10
11
int mHeaderViewHeight;
mHeaderView.getViewTreeObserver().addOnGlobalLayoutListener(
new
OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mHeaderViewHeight = mHeaderView.getHeight();
getViewTreeObserver()
.removeGlobalOnLayoutListener(
this
);
}
});
但是需要注意的是OnGlobalLayoutListener可能会被多次触发,因此在得到了高度之后,要将OnGlobalLayoutListener注销掉。
0 0
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度
- OnGlobalLayoutListener获得一个视图的高度和宽度
- 获得一个视图的高度。OnGlobalLayoutListener获得一个视图的高度
- 获得一个视图的高度。OnGlobalLayoutListener获得一个视图的高度
- 获得一个视图的高度。OnGlobalLayoutListener获得一个视图的高度
- 通过OnGlobalLayoutListener获得视图的高度
- 【android】利用getViewTreeObserver().addOnGlobalLayoutListener()获得一个视图的高度
- 两个进程如何共享内存
- 解决AndroidADT自带Eclipse编辑器不能自动代码提示的问题。
- aix 系统中的aioserver进程解释
- java类存在继承与实现
- Java 字符串类型16进制字面值转成字面值字节数据工具类
- OnGlobalLayoutListener获得一个视图的高度
- cacti
- mysql默认值的问题
- Java把double数据写入文件中
- ArgumentError:Error #2004:某个参数无效
- NSAttributedString绘制多色镂空字符串
- awk 实现数字螺旋打印
- .NET重构(一):抽象工厂模式实现登录
- configure: error: C++ preprocessor "/lib/cpp" fails sanity check