2016-04-16 100 views
0

我有一个使用案例,我从网络下载一些数据,并填充一个列表,当用户点击它们时,又有另一个列表(同样来自网络的数据)。当用户点击第二个列表中的一个项目时,我想显示一个新的屏幕。新片段重叠工具栏

我到目前为止所做的是一个有两个片段的活动(每个列表一个)。这两个片段都位于CoordinatorLayout之内并位于工具栏下方。但是我想要显示的新屏幕不应该包含工具栏。因此我不能使用我用于其他两个片段的FrameLayout。 因为我想要用户启动时这个新屏幕能够与后退按钮移回到先前的状态(第二个列表加载和滚动,直到用户点击一个项目)我不认为它可能创建一个新的Activity自从保持这种状态并不容易。

有没有一种方法,我可以创造以前上面新建一个片段Toolbar,如果我只是创建这个片段将不会有任何性能损失,因为操作系统将在同一时间绘制两个片段(但只显示一个)?请注意,第二个片段中已经加载了很多图像。

我的XML布局现在看起来是这样的:

<android.support.v4.widget.DrawerLayout 
android:id="@+id/dl_container" 
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" android:layout_height="match_parent" 
android:fitsSystemWindows="true"> 

<android.support.design.widget.CoordinatorLayout 
    android:id="@+id/coordinator_layout" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.v7.widget.Toolbar android:id="@+id/tb_toolbar" 
     android:gravity="center" 
     android:background="@color/white" android:minHeight="?attr/actionBarSize" 
     android:layout_width="match_parent" android:layout_height="wrap_content"> 

     <TextView android:id="@+id/toolbar_title" android:layout_gravity="center" 
      android:textSize="22sp" android:textColor="@color/toolbat_title_color" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" /> 

    </android.support.v7.widget.Toolbar> 


    <FrameLayout 
     android:id="@+id/fl_content" android:layout_marginTop="?android:attr/actionBarSize" 
     android:layout_width="match_parent" android:layout_height="match_parent" /> 

    <include android:id="@+id/bottom_sheet" 
     layout="@layout/bottom_sheet_video" /> 

</android.support.design.widget.CoordinatorLayout> 

<android.support.design.widget.NavigationView 
    android:id="@+id/nv_navigation" 
    android:layout_width="wrap_content" android:layout_height="match_parent" 
    android:fitsSystemWindows="true" android:layout_gravity="start" 
    /> 

+0

((MainActivity)getActivity())getActionBar()隐藏();在你的片段onCreateView方法 –

+0

@Mes,在前面的片段xml背景中添加白色背景 –

回答

0

添加您的片段回栈(重叠),

Fragment fragment = new Fragment(); 
    getSupportFragmentManager().beginTransaction().replace(R.id.container,fragment,"") 
      .addToBackStack("").commit(); 

的不要让在堆栈中的片段。

Fragment fragment = new Fragment(); 
    getSupportFragmentManager().beginTransaction().replace(R.id.container,fragment,"").commit(); 
+0

我知道我可以重叠这种方式,但工具栏将是可见的,我不希望它 – Mes

0

您需要隐藏片段中的工具栏。

ActionBar actionBar = ((MainActivity) getActivity()).getActionBar(); 
actionBar.hide(); 

onCreate()或片段的onCreateView(),它会隐藏在片段中的工具栏。 。

,并再次显示toolbar当你离开的片段,你可以调用

@Override 
public void onDestroyView(){ 
    super.onDestroyView(); 
ActionBar actionBar = ((MainActivity) getActivity()).getActionBar(); 
actionBar.show(); 


} 

希望它hepls