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

Ank*_*ria 6 xml layout android android-layout android-inflate

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

我的activity_main 布局是使用Collapsing 工具栏和Recycler 视图协调布局。

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

那么如何处理呢?我搜索了这个,但到处都可以找到如何将视图添加到现有视图中。但就我而言,我想完全改变看法。

谢谢

jai*_*rik 5

您只需调用setContentView(R.layout.your_search_layout)按钮的点击监听器即可。

例子 -

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

然而,使代码模块化始终是一个好习惯,因此您应该考虑使用Fragments 来实现这一点。


小智 1

有两种方法可以做到这一点:一种是使框架布局成为布局的父标记,然后创建两种布局:一种是您已经创建的布局,另一种是在其上框架的搜索布局,并使搜索布局可见,当您单击搜索使其可见。

第二种方法是为搜索布局创建新的 XML 布局文件,并像这样膨胀它:

View v = getLayoutInflater().inflate(R.layout.YOUR_LAYOUT_ID, null);
Run Code Online (Sandbox Code Playgroud)

这个布局的元素将像这样:

Button button=(Button)v.findviewbyid(R.id.your_button_id);
Run Code Online (Sandbox Code Playgroud)

更改视图的可见性将有助于您完全想要更改视图的情况