Java 使一个布局在另一个视图/布局开关上仍然可见

Java 使一个布局在另一个视图/布局开关上仍然可见,java,android,xml,layout,Java,Android,Xml,Layout,我有两个XML布局,例如“菜单布局”和“游戏布局”。在应用程序启动时,通过setContentView(R.id.menu_布局)将视图设置为“menu_布局”。就在这一行之后,我正在创建另一个布局-“top_layout”,我需要使它始终位于顶部(保持可见),而不考虑视图切换 这意味着,当视图从“菜单布局”切换到“游戏布局”或从“游戏布局”切换到“菜单布局”时,“顶部布局”仍然可见,并且不受此影响 知道如何使用这些参数创建“top_布局”吗 感谢您的建议。您可以使用具有顶部布局的单个活动,然后

我有两个XML布局,例如“菜单布局”和“游戏布局”。在应用程序启动时,通过setContentView(R.id.menu_布局)将视图设置为“menu_布局”。就在这一行之后,我正在创建另一个布局-“top_layout”,我需要使它始终位于顶部(保持可见),而不考虑视图切换

这意味着,当视图从“菜单布局”切换到“游戏布局”或从“游戏布局”切换到“菜单布局”时,“顶部布局”仍然可见,并且不受此影响

知道如何使用这些参数创建“top_布局”吗


感谢您的建议。

您可以使用具有顶部布局的单个活动,然后在下面的容器中使用FragmentManager切换片段

使用从容器中动态添加和删除的视图可以手动实现类似的结果,当您需要处理具有多个替换视图的更复杂场景时,片段会更有用,并且还需要进行回栈,而您不想自己这样做

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
<include layout="@+id/top_layout" />

<FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
public static class GameFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.game_layout, container, false);
}
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
     MenuFragment fragment = new MenuFragment();
        fragmentTransaction.add(R.id.container, fragment);
        fragmentTransaction.commit();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    GameFragment fragment = new GameFragment();
    fragmentTransaction.replace(R.id.container, fragment);
    fragmentTransaction.commit();
}

片段添加:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
<include layout="@+id/top_layout" />

<FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
public static class GameFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.game_layout, container, false);
}
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
     MenuFragment fragment = new MenuFragment();
        fragmentTransaction.add(R.id.container, fragment);
        fragmentTransaction.commit();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    GameFragment fragment = new GameFragment();
    fragmentTransaction.replace(R.id.container, fragment);
    fragmentTransaction.commit();
片段开关:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
<include layout="@+id/top_layout" />

<FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"/>
public static class GameFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.game_layout, container, false);
}
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
     MenuFragment fragment = new MenuFragment();
        fragmentTransaction.add(R.id.container, fragment);
        fragmentTransaction.commit();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    GameFragment fragment = new GameFragment();
    fragmentTransaction.replace(R.id.container, fragment);
    fragmentTransaction.commit();
文件: