2016-07-09 31 views
0

Ich folgte einer ziemlich einfachen Anleitung, um eine Navigationsschublade hinzuzufügen, aber die Schublade ist nicht da, wenn die App ausgeführt wird, und die Layouts für den Hauptbildschirm und die Schublade sind beide in der Hauptavität angezeigt, überlappend. : //Navigationsschublade überhaupt nicht angezeigt (Android)

Irgendwelche Ideen?

EDIT: falsch geschriebene ein Attribut ... Schrieb android:gravity, statt android:layout_gravityGefühl dumm: P

Hier ist das XML-Layout:

<android.support.v4.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/drawer_layout" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:context="com.kapres.test2.MainActivity"> 

     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:src="@drawable/main_screen" 
      android:scaleType="centerCrop"/> 

     <TextView 
      android:layout_centerHorizontal="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="test2" 
      android:textSize="38dp" 
      android:paddingTop="32dp"/> 

    </RelativeLayout> 

    <ListView 
     android:id="@+id/main_menu_layout" 
     android:layout_width="200dp" 
     android:layout_height="match_parent" 
     android:gravity="left|start"> 

    </ListView> 

</android.support.v4.widget.DrawerLayout> 

Hier ist der Java-Code:

package com.kapres.test2; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 
import android.widget.LinearLayout; 
import android.widget.ListView; 
import android.widget.TextView; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ArrayList<String> mainMenuList = new ArrayList<String>(); 

     mainMenuList.add("item1"); 
     mainMenuList.add("item2"); 
     mainMenuList.add("item3"); 
     mainMenuList.add("item4"); 
     mainMenuList.add("item5"); 

     ArrayAdapter mainMenuAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mainMenuList); 
     ListView listView = (ListView) findViewById(R.id.main_menu_layout); 
     listView.setAdapter(mainMenuAdapter); 
    } 
} 
+0

Sie können ein anderes Projekt erstellen, wählen Sie eine Navigationsschublade Vorlage und versuchen Sie zu sehen, was Sie anders gemacht haben. Nur eine Idee. – Vucko

+0

Sie sollten die Schublade verwenden, wie die eingebaute Methode Android (mit einer Menü-Datei), wenn ja, ich werde eine Antwort mit einem Beispiel –

+0

Ich sehe, ich habe es funktioniert aber. Welche Vorteile bietet die Verwendung der Navigationsschubladen-Vorlage? Ich habe es mir kurz angesehen, aber es scheint mir eine Art Overkill für meine Bewerbung zu sein: p Ich bin noch neu (eine Woche), und ich versuche wirklich nur, etwas Einfaches für mein erstes Selbst zu machen. geschrieben App –

Antwort

0

Hier ist das Layout für voll funktionsfähige Schublade. Achten Sie auf Android: layout_gravity = "Start" -Attribut. Wenn Sie diese Linie entfernen, wird die Schublade immer geöffnet. Dies ist nützlich für die Bearbeitung.

<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 --> 

<LinearLayout 
    android:id="@+id/drawer_content" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="start" 
    android:background="@color/background"> 

</LinearLayout> 

DrawerActivity:

// 1. Set content view 
    setContentView(R.layout.app_drawer); 
    // 2. Set drawer layout 
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() { 
     @Override 
     public void onDrawerSlide(View drawerView, float slideOffset) { 

     } 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      // Update user data end etc. 
      loadUserDataOntoDrawer(); 
     } 

     @Override 
     public void onDrawerClosed(View drawerView) { 

     } 

     @Override 
     public void onDrawerStateChanged(int newState) { 

     } 
    }); 
    mDrawerContent = (LinearLayout) findViewById(R.id.drawer_content); 

    // Initialize your data adapter 
    mMenuDataAdapter = new MenuDataAdapter(MenuHolder.getInstance().getMenuItemList()); 
    // Find recyclerview 
    mRecyclerView = (RecyclerView) findViewById(R.id.left_drawer); 
    // Define layout manager 
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 
    // Set adapter 
    mRecyclerView.setAdapter(mMenuDataAdapter); 
    // Set animator 
    mRecyclerView.setItemAnimator(new SlideInUpAnimator(new OvershootInterpolator(1f))); 
+1

Danke, ich hatte das Attribut Schwerkraft falsch geschrieben, vergessen "Layout_". –

0

vorformulierten Methode der Schublade jedoch in Ihrer Aktivität zu zeigen, Sie sind nicht die Schublade an allen

private NavigationView navigationView; 
    private DrawerLayout drawerLayout; 

aufrufen und dann

private void setupDrawerLayout() { 
     drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     navigationView = (NavigationView) findViewById(R.id.navigation_view); 

     navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
      @Override 
      public boolean onNavigationItemSelected(MenuItem menuItem) { 
       Toast.makeText(getApplicationContext(), menuItem.getItemId() 
       + menuItem.getTitle().toString(), Toast.LENGTH_SHORT).show(); 

       menuItem.setChecked(true); 
       drawerLayout.closeDrawers(); 
       return true; 
      } 
     }); 
0

Ah, tut mir leid, Jungs, das Problem gefunden. Nur ein dummer Tippfehler. Ich schrieb "android: gravity (...)" anstatt "android: layout_gravity (...)" Realisiert, als ich Gregorys Code mit meinem ovn verglich. Vielen Dank!