【问题标题】:Making one layout still visible regardless on another view/layout switch使一个布局仍然可见,不管另一个视图/布局切换
【发布时间】:2016-04-16 13:13:17
【问题描述】:

我有两个 XML 布局,例如“menu_layout”和“game_layout”。在应用启动时,视图通过 setContentView(R.id.menu_layout) 设置为“menu_layout”。就在这一行之后,我正在创建另一个布局 - “top_layout”,我需要让它始终位于顶部(保持可见),无论视图切换。

这意味着,当视图从“menu_layout”切换到“game_layout”(反之亦然)时,“top_layout”仍然可见并且不受此影响。

知道如何使用这些参数创建这个“top_layout”吗?

感谢您的建议。

【问题讨论】:

    标签: java android xml layout


    【解决方案1】:

    您可以将单个活动与 top_layout 一起使用,然后在下面有容器,您可以在其中使用 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"/>
    

    片段 (2x):

    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();
    

    文档: http://developer.android.com/guide/components/fragments.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多