getDecorView()。getWidth()在orientationChange上返回不正确的值

时间:2012-11-15 20:53:07

标签: android

我正在使用getDecorView().getWidth()来确定我的UI的某些元素的大小。是的,我知道这是一个hacky方法,但我发现它是唯一可靠的方法来确定屏幕的实际可用宽度(例如,减去屏幕右侧可见的导航栏在风景上的Kindle Fire HD)。问题是当设备的方向发生变化时,立即调用此方法会导致错误的值。在一瞬间(通过发布延迟的runnable)调用相同的方法会返回正确的值,但这种方法在黑客攻击之上是一种黑客攻击。有没有办法找出装饰视图何时“准备好”才能将正确的值返回给我?

1 个答案:

答案 0 :(得分:0)

我相信虽然我愿意错误,如果你使用活动的runOnUiThread在UI线程上运行你的请求它应该做你想要的,事情只能在UI线程上顺序发生,所以这个调用将排队等到动画完成。

runOnUiThread(new Runnable() {
    @Override
    public void run() {
        //code that needs to run on UI thread
    }
});