2016-06-10 8 views
1

Wie kann ich die Navigationsleiste in meiner Android App automatisch öffnen?Wie kann man verhindern, dass die Android-Navigationsleiste automatisch geöffnet wird?

Früher funktionierte es gut. Am Anfang außer Sichtweite und in Sichtweite gekippt werden. Aber ich brauchte einen Titel dafür. Zuerst war es nur ein ListView. Bald nach dem Ändern der Schublade Xml (siehe unten), um es einen Titel über einer Listenansicht zu geben, begann es automatisch zu öffnen. Ich habe dem Code sicherlich nichts hinzugefügt wie my_nav_drawer.openOnStartup().

<!-- The navigation drawer --> 
<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 --> 
<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="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:background="@drawable/ail_background_gradient" 
    tools:context="com.allinlearning.assist_android.HomeScreenActivityFragment"> 

    <ImageView 
     android:id="@+id/imgViewLogo" 
     android:src="@drawable/ail_logo" 
     android:layout_margin="10dp" 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:scaleType="fitXY" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="ALL In Learning" 
     android:id="@+id/textViewLogo" 
     android:layout_margin="10dp" 
     android:layout_below="@+id/imgViewLogo" 
     android:layout_centerHorizontal="true" 
     android:textSize="@dimen/font_size26" 
     android:textStyle="bold" /> 

    <ImageButton 
     android:id="@+id/imgBtnGradeAssessment" 
     android:src="@drawable/grade_assessment" 
     android:layout_width="100dp" 
     android:layout_height="95dp" 
     android:scaleType="fitXY" 
     android:layout_centerVertical="true" 
     android:layout_toLeftOf="@+id/textViewGradeAssessment" 
     android:layout_toStartOf="@+id/textViewGradeAssessment" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Grade" 
     android:id="@+id/textViewGradeAssessment" 
     android:textColor="@color/white" 
     android:textSize="@dimen/font_size28" 
     android:layout_centerVertical="true" 
     android:layout_alignRight="@+id/imgViewLogo" 
     android:layout_alignEnd="@+id/imgViewLogo" /> 

    <ImageButton 
     android:id="@+id/imgBtnPrivateData" 
     android:src="@drawable/two_clickers" 
     android:layout_width="100dp" 
     android:layout_height="95dp" 
     android:scaleType="fitXY" 
     android:layout_below="@+id/imgBtnGradeAssessment" 
     android:layout_alignLeft="@+id/imgBtnGradeAssessment" 
     android:layout_alignStart="@+id/imgBtnGradeAssessment" /> 


    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Private Data" 
     android:id="@+id/textViewPrivateData" 
     android:textColor="@color/white" 
     android:textSize="@dimen/font_size28" 
     android:layout_alignBottom="@+id/imgBtnPrivateData" 
     android:layout_toRightOf="@+id/imgBtnPrivateData" 
     android:layout_toEndOf="@+id/imgBtnPrivateData" 
     android:layout_marginBottom="40dp" /> 

</RelativeLayout> 

<TextView 
    android:layout_width="240dp" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="I AM THE TITLE" 
    android:id="@+id/tvDrawerTitle" 
    android:layout_margin="10dp" 
    android:layout_centerHorizontal="true" 
    android:textSize="@dimen/font_size26" 
    android:textStyle="bold" 
    android:textAlignment="center" 
    android:textColor="@color/black" /> 

<ListView 
    android:id="@+id/lvDrawerItems" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="left" 
    android:choiceMode="singleChoice" 
    android:divider="@android:color/transparent" 
    android:dividerHeight="0dp" 
    android:background="@color/white" /> 

Breaking news:

Ich habe festgestellt, dass oben in meinem XML die Ursache ist. Ich habe die XML-Navigationsleiste einfach wieder auf die ListView selbst zurückgesetzt ...

... und es wird nicht mehr automatisch geöffnet. Sieht gut aus und funktioniert gut. Mein Ziel ist es, einen TextView-Titel hinzuzufügen, ohne dass die Schublade beim Start geöffnet wird.

+0

Werfen Sie einen Blick auf [hier] (http://Stackoverflow.com/a/37757349). –

+0

Schauen Sie sich die [doc] (https://developer.android.com/training/implementing-navigation/nav-drawer.html#Init) an, wo die Haupt-und Schublade sollte, und ** Android: layout_gravity = "Start "** Attribut. – solosodium

+1

@Mike das war in der Tat die richtige Antwort. Da du das erste Mal warst, gib mir hier eine korrekte Antwort, damit ich sie für andere markieren kann. Danke Solosodium. – Alyoshak

Antwort

1

Es ist nicht so, dass sich Ihre Schublade automatisch öffnet. Es ist, dass die DrawerLayout nicht eine View als Schublade verwenden, so dass beide seiner direkten Kind View s es füllen. Die LinearLayout Schublade, die als letzte aufgeführt wird, deckt den Inhalt View ab, so dass es nur so aussieht, als sei die Schublade geöffnet.

DrawerLayout bestimmt, welche View s als Schubladen zu verwenden, indem Sie durch seine direkten Kinder für diejenigen mit einer horizontalen layout_gravity Einstellung suchen; h. left/right oder start/end. Sie möchten, dass dieses Attribut auf LinearLayout gesetzt wird, da es jetzt als die Schublade fungiert. In Ihrem Hauptlayout bewegen Sie einfach android:layout_gravity="left" von ListView zu LinearLayout.

+0

Das war es. Vielen Dank. Noch ein elender Copy-Paste-Fehler – Alyoshak