SetContentView没有显示屏幕(还)?

时间:2014-05-29 20:41:03

标签: android

Android Activity中是否有办法执行 setContentView(),这样我就可以让Android计算布局,因此我可以通过 findViewByID成功获取其中的视图( )但尚未显示

这将是一个主要活动和一些下属活动的应用程序,我想要启动但不显示的应用程序将是下属活动之一。 (换句话说,主视图已经填满了屏幕,因此只需将新视图隐藏在视图层次结构的底部就足够了)。该活动将以“标准”启动模式启动。

如果有一种方法可以将它保持在View层次结构的底部,那么当我想要显示它时,我会如何强制它到顶部?

注意:这个应用程序已经存在 - 它是一个大型的,复杂的工业应用程序,有14个活动,为Android 2.35和2.36编写,因此重新设计它以使用Fragments而不是Activities将是不切实际的。我只想将一个Activity修改为不显示,或者只显示在View层次结构的底部,这样它就不可见了。

3 个答案:

答案 0 :(得分:1)

  

这将是一个主要活动和一些从属活动的应用程序,我想要启动但不显示的应用程序将是下属活动之一

这是不可能的。或者,更准确地说,欢迎您开始该活动而不填充其UI,但它仍将接管屏幕,因此将向用户显示一个空白屏幕,这不是特别有用。

  

换句话说,主视图已经填满了屏幕,因此只需将新视图隐藏在视图层次结构的底部就足够了

每个活动都有自己的视图层次结构。 A"从属活动"关于某些其他活动的视图层次结构,不能也不会位于顶部,底部或其他任何位置。

答案 1 :(得分:0)

我对Android很新,但我认为这可以通过片段轻松完成。一个片段将是当前显示的片段,另一个片段将覆盖一个示例的隐藏父视图。当您需要显示其他片段时,只需将布局设置为可见。

希望它有效,祝你好运。

答案 2 :(得分:0)

如果您想在不使用片段的情况下执行此操作,我建议您使用它们,您可以使用LayoutInflater来扩展您喜欢的任何布局,并使用setContentView在它们之间进行更改反复。

    View layout1 = LayoutInflater.from(this).inflate(/*your first layout */ R.layout.activity_layout_1, getWindow().getDecorView());
    //here you can use findViewByID like this
    View someViewInLayout1 = layout1.findViewByID(R.id.some_view);
    //... get fields for all others views you need here in layout1
    //than you inflate your other layout
    View layout2 = LayoutInflater.from(this).inflate(/*your second layout */ R.layout.activity_layout_2, getWindow().getDecorView());
    //... do the same for layout2

现在,只要您想在布局之间进行更改,就可以调用setContentView

setContentView(layout1 /*or layout2*/);