调用setContentView()
后获取有关视图的信息时遇到问题。点击按钮后我正在改变活动的布局。这是我的代码示例。
public void onClickButton1(View v) {
setContentView(R.layout.activity_main);
setScreen();
}
但是在执行setScreen()
方法时,布局仍然没有呈现,所以我不能在布局中的某个视图上调用getWidth()
(我可以但我总是得到0)。我怎么能等到setContentView()
完成?请注意使用此:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
setScreen();
}
对我来说还不够。我需要在活动周期中独立改变布局。
答案 0 :(得分:0)
没有简单的方法可以使用setContentView()
来获得您想要的结果。您需要完全删除所有视图,然后为新布局充气,使用ViewFlipper
在不同视图之间切换,或者,这是恕我直言的最佳方法,修改您的应用以使用Fragments
答案 1 :(得分:0)
您需要将ViewTreeObserver附加到您的布局:
setContentView(R.layout.yourLayoutName);
View yourLayout = findViewById(R.id.ID_OF_YOUR_LAYOUT);
ViewTreeObserver vto = yourLayout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//Do your work
vto.removeOnGlobalLayoutListener(this);
}
});