如何用另一个android替换一个视图

时间:2017-09-08 11:40:20

标签: android android-layout

我有两种布局,如下图所示。在第二个布局中,我有两个按钮。当用户点击button1时,布局2应该占据整个屏幕,而layout1应该是不可见的。当再次按下按钮2时,它应该显示两种布局的正常视图。

初步观点:

initial page view

按下按钮1时:

when button 1 is pressed

按下按钮2时,应再次显示原始视图。

enter image description here

2 个答案:

答案 0 :(得分:0)

您可以使用Fragments来完成此任务(或不使用)。使用FrameLayout来包含要被踢出的布局"当你按下按钮1时。

要做到这一点,只需获取对FrameLayout的引用(给它一个id,然后在onCreate()方法中引用它),然后在Button1 onClickListener() setVisibility(View.GONE);中设置的FrameLayout。

那将摆脱这种观点。

当你按下Button2时,通过设置onClickListener() setVisibility(View.VISIBLE);

重新设置FrameLayout

PS。 FrameLayout是一个很棒的容器"对于一个片段。

这是执行此操作的代码:

布局文件:(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.yourDomain.yourApplicationName.MainActivity">

    <FrameLayout
        android:id="@+id/layout_1"
        android:background="@android:color/holo_purple"
        android:layout_width="match_parent"
        android:layout_height="150dp">
    </FrameLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/holo_green_light">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button 1"/>

            <Button
                android:id="@+id/button2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Button 2"/>

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

MainActivity :( MainActivity.java)

package com.yourDomain.yourApplicationName;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button button1;
    Button button2;

    View frameLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        frameLayout = findViewById(R.id.layout_1);

        button1 = findViewById(R.id.button1);
        button2 = findViewById(R.id.button2);

        setButtonBehavior();
    }

    private void setButtonBehavior() {
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                frameLayout.setVisibility(View.GONE);
            }
        });
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                frameLayout.setVisibility(View.VISIBLE);
            }
        });
    }
}

答案 1 :(得分:0)

您可以在一个布局中使用2个片段,然后您可以使用片段的visibilty属性。片段是一个部分布局,您可以将按钮和其他工具放在里面。这是片段的解释。

http://www.vogella.com/tutorials/AndroidFragments/article.html