2016-05-29 12 views
-1

Ich habe eine Aktivität gemacht, die ein ListView und ein Fragment enthält (mit einem DrawerLayout).DrawerLayout auf Fragment blendet ListView

Activity.xml:

<?xml version="1.0" encoding="utf-8"?> 
<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:background="#ddffff" 
> 

<ListView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/lista" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentTop="true" /> 

<fragment 
    android:id="@+id/fragment1" 
    android:name=".Fragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

</RelativeLayout> 

Die Listenansicht nicht angezeigt. Ich denke, die Listenansicht ist wegen des Fragments versteckt. Ich weiß nicht warum.

+0

Sowohl die Listenansicht als auch das Fragment werden im Vollbildmodus angezeigt. Das Fragment ist oben, also deckt es die Listenansicht ab. Wie soll die Listview und das Fragment auf dem Bildschirm positioniert werden? – Francesc

+0

Ich möchte, dass die Listenansicht hinter dem Drawerlayout liegt. So: http://blog.teamtreehouse.com/wp-content/uploads/2015/02/nav_drawer_final.gif – tomss

Antwort

0

Um das Layout für ein DrawerLayout zu erstellen, muss Ihr oberstes Element im Layout vom Typ DrawerLayout sein. Versuchen Sie es wie folgt

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
    <!-- The navigation drawer --> 
    <ListView android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#111"/> 
</android.support.v4.widget.DrawerLayout> 

Siehe this als Referenz.

0

Es ist nur natürlich, dass das Fragment die gesamte Ansicht deckt, weil Sie seine Eigenschaft als

android:layout_width="match_parent" 
android:layout_height="match_parent" 

Dies bedeutet, dass das Fragment wird immer „die Eltern übereinstimmen“ Sinn wird die gesamte Auflösung des immer decken Eltern-Layout (in diesem Fall die RelativeLayout), können Sie es auf einen numerischen Wert ändern, es zu verhindern, so zu tun, zum Beispiel, wenn ich mein Fragment will eine Höhe immer von 30DP ich tun würde:

android:layout_width="match_parent" 
android:layout_height="30dp" 

Alternativ können Sie auch ein sekundäres Layout festlegen mit einer festgelegten Größe und füllen Sie stattdessen das Fragment.

+0

Es gibt einen Fehler zurück: DrawerLayout muss mit MeasureSpec.EXACTLY gemessen werden. – tomss

+0

Wenn Sie DrawerLayout verwenden, sollten Sie dem folgen, was Francesc gesagt hat, und ein DrawerLayout erstellen, das alles umhüllt, und dann ein frameLayout erstellen, das das Fragment enthält, gefolgt von der Listview selbst. – Ilias

Verwandte Themen