在顶层保留一个半透明背景的片段

时间:2015-05-19 00:12:37

标签: android android-layout android-fragments

我正在尝试这样做: |片段菜单(半透明)|身体(覆盖所有屏幕宽度)|

我在屏幕左侧的片段中有一个菜单,当我点击菜单按钮时,我想在身体中打开一个新片段(正文大小=屏幕大小)。我希望片段菜单必须仍然可见,并带有半透明背景。

这是我的xml布局:

<RelativeLayout 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:paddingBottom="0dp"
    android:paddingLeft="0dp"
    android:paddingRight="0dp"
    android:paddingTop="0dp"
    tools:context="com.example.MainActivity" 
    android:background="@drawable/background_image"
    >

    <fragment android:name="com.example.Principal_Menu"
              android:id="@+id/menu_fragment"
              android:layout_width="150dp"
              android:layout_height="match_parent" />

    <FrameLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/body_container"
        android:orientation="vertical">

    </FrameLayout>

</RelativeLayout>

但是当我在body_container中替换或添加片段时,menu_fragment消失了:(
我希望很清楚,很抱歉提出很多问题。

1 个答案:

答案 0 :(得分:2)

如果您希望透明菜单位于body_container的前面,那么就像这样重新构建您的xml

<RelativeLayout 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"
tools:context="com.example.MainActivity" 
android:background="@drawable/background_image" >

<FrameLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">    

  <FrameLayout 
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:id="@+id/body_container"
     android:orientation="vertical">

   </FrameLayout>

  <fragment android:name="com.example.Principal_Menu"
          android:id="@+id/menu_fragment"
          android:layout_width="150dp"
          android:layout_gravity="top|center_horizontal"
          android:layout_height="match_parent" />
</FrameLayout>

这里的逻辑是FrameLayout堆栈视图顶部的视图因此使用此布局,body_container中的Fragment将位于菜单Fragment的后面,如果您希望body_container中的Fragment位于前面,您可以在Fragment上使用此代码getView().bringToFront();或致电此代码getSupportFragmentManager().beginTransaction().hide(the_menu_fragment).commit();

希望有所帮助