首先介绍一下这两个监听:大家都知道在oncreat里面获取控件会得到错误的值,原因是因为此时控件还没有绘制好,因此便先引入一下这两个监听。
//view重绘时回调
view.getViewTreeObserver().addOnDrawListener(new OnDrawListener() {
@Override
public void onDraw() {
// TODO Auto-generated method stub
}
});
//布局的状态发生变化或者可见性发生变化才会调用
view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// TODO Auto-generated method stub
}
});
-
1.在布局中固定大小
-
OnCreate函数中
view.getHeight()、view.getWidth()、view.getLeft()、view.getTop()、view.getRight()、
view.getBottom()等方法失效。
view.getLayoutParams().width和view.getLayoutParams().height能够获得正确的参数值。 -
在控件绘制监听中
view.getHeight()、view.getWidth()、view.getLeft()、view.getTop()、view.getRight()、
view.getBottom()、 view.getLayoutParams().width和view.getLayoutParams().height都能够获得
正确的参数值。 -
2.在布局中使用match/wrap
-
OnCreate函数中
view.getHeight()、view.getWidth()、view.getLeft()、view.getTop()、view.getRight()、
view.getBottom()、 view.getLayoutParams().width和view.getLayoutParams().height全部失效。 -
在控件绘制监听中
view.getHeight()、view.getWidth()、view.getLeft()、view.getTop()、view.getRight()、
view.getBottom()等方法能够获得正确的参数值。
view.getLayoutParams().width和view.getLayoutParams().height失效。








网友评论