onLayoutChange()方法未被调用

3

我有一个自定义视图

 abstract public class MyView extends AdapterView<Adapter> implements android.view.View.OnLayoutChangeListener {
     ...
     @Override
     public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
         Log.i("MyView", "onLayoutChange()");
     }
 }

我创建了一个匿名子类,将其实例化并在onResume()期间设置为我的ContentView。

onResume() {
    ...
    MyView myView = new MyView(this) {...};
    setContentView(myView);
}

现在,当我隐藏 ActionBar 并切换到全屏时,

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
getActionBar().hide();

ActionBar和状态栏会慢慢缩小,直到它们不再像预期的那样可见。

现在,我的MyView理论上应该在屏幕上有更多的空间,但据我所知,它没有自动重新测量和布局以填充这个空间。

我本来希望至少调用onLayoutChange()方法,但我可以通过logcat看到这不是情况。

在这种情况下,我需要做什么才能调用onLayoutChange(),或者如何告诉我的MyView填充可用空间?


4
你是否调用了addOnLayoutChangeListener方法? - pskink
谢谢。我现在感觉真的很愚蠢。就这样了。 - cgogolin
来吧,即使最好的开发人员也会遇到这种情况... ;) - pskink
1个回答

2

为了回答这个问题(或者你可以使用自己的代码来回答它),请注意,如@pskink在评论中指出,请不要忘记调用addOnLayoutChangeListener


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接