Android下动态获取View的高度或宽度
2017-04-01 10:51
435 查看
Android下View必须实现
这个方法必须要在View调用了onLayout方法后才能获得,为了监听onLayout方法,可以获得ViewTree观察者上的监听器来实现,具体代码为:
由方法的名字就可以得知这个方法必须要在View调用了onMeasure方法后才能获得,有一种快捷的方法可以通知系统主动测量View(调用onMeasure),代码如下:
2
1
2
注意:有些人使用measure(0,0)方法时抛空指针异常,这是因为你的view对象根节点的布局已经实现了onMeasure方法,比如RelativeLayout重写了onMeasure方法,可以换成LinearLayout这种没有重写此方法的布局。
onMeasure,
onLayout,
onDraw三个方法,要动态获取View的高度(或宽度)就必须要理解这三个方法的调用的时间。
两个方法的使用
getHeight() 方法
这个方法必须要在View调用了onLayout方法后才能获得,为了监听onLayout方法,可以获得ViewTree观察者上的监听器来实现,具体代码为:view.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener(){ @override public void onGlobalLayout(){ //只需要获取一次高度,获取后移除监听器 view.getViewTreeObserver().removeGlobalOnLayoutListener(this); //这里高度应该定义为成员变量,定义为局部为展示代码方便 int height = view.getHeight(); } });
getMeasuredHeight() 方法
由方法的名字就可以得知这个方法必须要在View调用了onMeasure方法后才能获得,有一种快捷的方法可以通知系统主动测量View(调用onMeasure),代码如下:view.measure(0,0);//通知系统主动测量 int height = view.getMeasuredHeight();1
2
1
2
注意:有些人使用measure(0,0)方法时抛空指针异常,这是因为你的view对象根节点的布局已经实现了onMeasure方法,比如RelativeLayout重写了onMeasure方法,可以换成LinearLayout这种没有重写此方法的布局。
相关文章推荐
- Android下动态获取View的高度或宽度
- Android下动态获取View的高度或宽度
- 转--如何使用代码动态的获取和设置ImageView的宽度和高度?
- Android UI之代码动态设置ImageView的宽度和高度
- Wiki_Android_获取ImageView的最大最小宽度和高度
- 动态获取和设置ImageView的宽度和高度
- 获取屏幕的宽度以及动态设置ImageView的宽度、高度
- IOS动态获取文本的高度--自适应文本宽度、高度Textview
- Android动态设置view的高度宽度
- Android 获取View高度宽度
- Android在onCreate()方法中动态获取TextView控件的高度
- 如何使用代码动态的获取和设置ImageView的宽度和高度?
- Android获取View的宽度和高度
- Android在onCreate()方法中动态获取TextView控件的高度
- android TextView 如何动态获取宽度
- 如何动态的获取和设置ImageView的宽度和高度?
- 如何使用代码动态的获取和设置ImageView的宽度和高度?
- Android获取屏幕或View宽度和高度的方法
- Android获取View的宽度和高度
- android关于代码中动态设置view的高度宽度的问题