我正在使用ViewTreeObserver.OnGlobalLayoutListenerin onCreate()方法来获取布局的宽度。它很好用,但是当我在onGlobalLayout()回调更改中使用变量时,请不要将其保留在外部。
例如,当我在“活动”字段中保存布局的宽度时,它会在onGlobalLayout()方法外返回上一个值或默认情况下的值(在我的情况下为0)。当我更改变量的引用时,方法外它们将为null。
layout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
width = layout.getWidth(); // width - activity's field
Log.d("myLogs", width); //return rigth value
}
});
Log.d("myLogs", width); //return 0
Run Code Online (Sandbox Code Playgroud)
我不知道如何处理,也许我需要Layout以另一种方式获得宽度。
提前致谢)
您OnGlobalLayoutListener继续进行ViewTreeObserver,仅此onGlobalLayout而已,方法不会立即调用,它将在发生此布局的布局事件时被调用。因此,addOnGlobalLayoutListener立即使用方法,您不会收到未更改的width变量值。
| 归档时间: |
|
| 查看次数: |
7209 次 |
| 最近记录: |