2016-08-06 31 views
1

Ich bin neu in der Schublade Layout und die Verwendung von Fragmenten.Symbolleiste füllt den gesamten Bildschirm

Ich habe die tutorial beim Erstellen einer Aktivität mit einem DrawerLayout verwendet. Es gab mir einen Nullzeiger auf getActionBar(), so fügte ich a toolbar der Aktivität Haupt und stattdessen getSupportActionBar().

Jetzt sieht es so aus, als ob die Symbolleiste den gesamten Bildschirm ausfüllt, weil der Titel in der Mitte des Bildschirms ist und der Hintergrund der Symbolleiste auch auf dem gesamten Bildschirm angezeigt wird. Hier ist der XML-Code:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <!-- Toolbar --> 
    <android.support.v7.widget.Toolbar 
     android:id="@+id/my_toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:elevation="4dp" 
     android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/content_frame" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="#FFFFFF" /> 
    <!-- The navigation drawer --> 
    <ListView 
     android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:background="#FFFFFF" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" /> 
</android.support.v4.widget.DrawerLayout> 

Ich habe versucht, die layout_height mit 56dp ersetzen, und ich habe versucht, mit der Symbolleiste eine separate Layout-Datei mache darin und füge ihn in diese xml, aber das hat nicht funktioniert .

Warum füllt meine Symbolleiste den gesamten Bildschirm aus?

+0

Was Wert dieses ?: android ist: "attr/actionBarSize" layout_height = – Booger

+0

Das ist 56dp. Wenn ich es entferne und layout tun layout_height = "56dp", ist es immer noch im Vollbildmodus. – Janneman96

+0

Verschieben Sie Ihre Designattribute vor das Höhenattribut (vielleicht wird dort die Höhe festgelegt). – Booger

Antwort

1

A DrawerLayout erwartet Ansichten in ihm. Sie liefern 3.

Die erste Ansicht ist der "Hintergrund". Es ist der Inhalt Ihres Bildschirms. Die zweite Ansicht, die Schublade, soll rein und raus animieren.

Sie liefern 3 Ansichten. Also deine Toolbar ist "der Inhalt" — also Vollbild, und deine Schublade ist dein eigentlicher Inhalt.

Ihr Problem zu beheben, versuchen Sie so etwas wie dieses:

<DrawerLayout> 

    <!-- The main content view --> 
    <LinearLayout> 
    <Toolbar/> 
    <FrameLayout 
     android:id="@+id/content_frame"/> 
    </LinearLayout> 

    <!-- The navigation drawer --> 
    <ListView/> 
</DrawerLayout> 
+0

Auch gibt es einen Fehler mit der Vorschau in Android Studio. Es zeigt mir eine Werkzeugleiste mit nur dem Titel und meiner eigenen Symbolleiste darunter. Ich habe meine Werkzeugleiste rot gemacht, um sie dort zu sehen, wo sie ist: http://imgur.com/a/qmc4G – Janneman96

+0

Dies ist kein Fehler, sondern das für Ihr Layout verwendete Thema. Sie können das in der Vorschau verwendete Theme ändern, um den Standard zu verbergen. –

+0

Ich fand es hier http://stackoverflow.com/questions/32909364/why-does-android-studio-always-show-actionbar-in-app-design -jeven-wenn-deaktiviert – Janneman96

1

DrawerLayout akzeptiert nur zwei untergeordnete Ansichten. Versuchen Sie, die Symbolleiste im Rahmenlayout hinzuzufügen. Oder Sie können erstellen wie beliw.

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 
    <!-- The ActionBar --> 
    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     android:fitsSystemWindows="true" 
     app:layout_scrollFlags="scroll|enterAlways" /> 
    <!-- The main content view --> 
    <FrameLayout 
     android:id="@+id/flContent" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</LinearLayout> 

<android.support.design.widget.NavigationView 
    android:id="@+id/navigation_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:background="@android:color/white" 
    app:headerLayout="@layout/layout_drawer_header" 
    app:itemTextColor="#000000" 
    app:menu="@menu/global"> 
</android.support.design.widget.NavigationView>