Android:在同一活动中更改布局

时间:2016-06-28 11:14:09

标签: android xml android-layout layout android-inflate

在我的应用程序的主要布局中,我有一个搜索任务按钮。现在,当用户单击该按钮时,我想将布局xml文件更改为search_layout.xml。 我不想为搜索任务创建新活动,并希望使用我的activity_main.java类进行编码。那么如何从现有的activity_main.xml中充实search_layout。

我的activity_main布局是带有折叠工具栏和Recycler视图的协调布局。

在我的search_layout.xml中,我有一个简单的相对布局。

那么如何应对呢? 我搜索了这个但是在任何地方我都知道如何将视图添加到现有视图中。但就我而言,我想彻底改变观点。

由于

4 个答案:

答案 0 :(得分:2)

您只需在按钮的点击监听器中拨打setContentView(R.layout.your_search_layout)即可。

示例 -

yourButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        setContentView(R.layout.your_search_layout);
    }
});

但是,使代码模块化始终是一种好习惯,因此您应该考虑使用Fragment来实现此目的。

答案 1 :(得分:1)

您可以查看this question,但是,这不是一个好习惯,您应该考虑使用Fragment或任何其他机制。通过这样做,您可以使用搜索逻辑混淆Activity的逻辑。

答案 2 :(得分:0)

有两种方法可以做到:一种是将框架布局作为布局的父标签,然后创建两种布局:一种是您已经创建的,另一种是搜索布局框架,并使搜索布局GONE可见当您点击搜索时,可见其可见性。

第二种方法是为搜索布局创建新的XML布局文件并对其进行充气:

View v = getLayoutInflater().inflate(R.layout.YOUR_LAYOUT_ID, null);

此布局的元素将如下所示:

Button button=(Button)v.findviewbyid(R.id.your_button_id);

在您完全想要更改视图的情况下,更改视图的可见性将有所帮助

答案 3 :(得分:0)

我认为在你的情况下,你应该分割处理这种情况。

阅读this,了解有关如何使用FragmentManager替换碎片的更多详细信息。

Here是一个关于如何在android中更改片段的好例子: