2015-11-13 3 views
4

У меня есть контейнер построить так:Фрагмент неумышленно за другим видом

RelativeLayout container 
--LinearLayout 
    --TextView 
--LinearLayout 
    --Button 
    --Button 

И я пытаюсь добавить фрагмент «ListFragment» в контейнер показа ВЫШЕ двух LinearLayouts с этим:

ListFragment listfragment = new ListFragment(); 
getFragmentManager().beginTransaction().replace(R.id.contianer,listfragment).commit(); 

Вопрос: Это не так. Он отображается только над вторым LinearLayout, и первый LinearLayout все еще отображается над слоем.

Вот как XMLs:

Контейнер XML:

<RelativeLayout 
     android:id="@+id/contianer" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_alignParentEnd="true" 
     android:layout_below="@+id/container"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingBottom="20dp" 
      android:paddingLeft="20dp" 
      android:paddingRight="20dp" 
      android:layout_marginLeft="0dp" 
      android:id="@+id/linearLayout" 
      android:layout_alignParentBottom="true" 
      android:paddingTop="30dp"> 

      <Button 
       android:id="@+id/back" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:text="Button" 
       android:textSize="30dp" /> 

      <Button 
       android:id="@+id/nextButton" 
       android:layout_width="match_parent" 
       android:layout_height="80dp" 
       android:layout_weight="0.5" 
       android:text="Button" 
       android:textSize="30dp" 
       android:background="#009688" 
       android:textColor="#ffffff" /> 
     </LinearLayout> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@android:color/white" 
      android:elevation="4dp" 
      android:id="@+id/vanisherView" 
      android:layout_centerHorizontal="true" 
      android:layout_margin="20dp"> 

      <TextView 
       android:id="@+id/erklareung" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:textColor="@android:color/black" 
       android:background="@android:color/white" 
       android:padding="40dp" 
       android:textAppearance="?android:attr/textAppearanceMedium" 
       android:textSize="35dp" 
       android:layout_alignParentTop="true" 
       android:layout_alignParentEnd="true" /> 

     </LinearLayout> 


    </RelativeLayout> 

Контейнер заворачивают в другой макет, но я думаю, что реально не имеет значения.

Вот фрагмент XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/black" 
    android:id ="@+id/viewer_layout"> 

    <com.woxthebox.draglistview.DragListView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/drag_list_view" 
     android:layout_width="match_parent" 
     android:background="@android:color/black" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:layout_height="match_parent"/> 

</RelativeLayout> 

Ive окрашены Фрагмент Блэка, чтобы увидеть, где показано, и где не

Спасибо за ответы и веселит

ответ

3

Не попробовать добавить Fragment в вид контейнера, который уже содержит другие виды.

Вместо этого разместите FrameLayout, где бы вы ни разместили Fragment, а затем добавьте Fragment к этому вместо родительского контейнера.

Вы можете установить необходимые атрибуты на FrameLayout, чтобы убедиться, что он расположен там, где вы хотите, в пределах RelativeLayout.

Пример:

<RelativeLayout android:id="@+id/container>" 

    <FrameLayout android:id="@+id/fragment_container"/> 

    <LinearLayout> 
     <Button/> 
     <Button/> 
    </LinearLayout> 

    <LinearLayout> 
     <TextView/> 
    </LinearLayout> 

</RelativeLayout> 
0

Вы можете обернуть макет в FrameLayout

FrameLayout 
--RelativeLayout //layout with your views 
--FrameLayout  //container for your fragment 
Смежные вопросы