2014-11-06 2 views
1

Я написал следующий код, чтобы добавить макет ящика в тему моего материала, которая не отображается. Появляется только панель инструментов.Невозможно добавить NavigationDrawer, используя MaterialDesign

MainActivity.java

package com.example.materiald; 

import android.os.Bundle; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarActivity; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.widget.Toolbar; 

public class MainActivity extends ActionBarActivity { 

    ActionBarDrawerToggle mActionBarDrawerToggle; 
    DrawerLayout mDrawerLayout; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); 

     mActionBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.open_navigation_drawer, R.string.close_navigation_drawer); 
     mDrawerLayout.setDrawerListener(mActionBarDrawerToggle); 
    } 
} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" > 

<include layout="@layout/toolbar" /> 

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawerLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <FrameLayout 
     android:id="@+id/mainContent" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
    </FrameLayout> 

    <!-- Nav drawer --> 

    <ListView 
     android:id="@+id/drawerList" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="left" 
     android:background="@android:color/white" 
     android:divider="@android:color/white" 
     android:dividerHeight="8dp" 
     android:drawSelectorOnTop="true" 
     android:headerDividersEnabled="true" /> 
</android.support.v4.widget.DrawerLayout> 

toolbar.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res /android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/toolbar" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:background="@color/myColorPrimary" 
android:minHeight="56dp" 
app:theme="@style/ThemeOverlay.AppCompat.ActionBar" /> 

значения/styles.xml

<style name="AppTheme.Base" parent="Theme.AppCompat"></style> 

значения/themes.xml значения-v21

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

<style name="AppTheme" parent="AppTheme.Base"> 
    <item name="colorPrimary">@color/myColorPrimary</item> 
    <item name="colorPrimaryDark">@color/myColorPrimaryDark</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
</style> 
</resources> 

/themes.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="AppTheme" parent="AppTheme.Base"> 
    <item name="android:windowContentTransitions">true</item> 
    <item name="android:windowAllowEnterTransitionOverlap">true</item> 
    <item name="android:windowAllowReturnTransitionOverlap">true</item> 
    <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> 
    <item name="android:windowSharedElementExitTransition">@android:transition/move</item> 
    <item name="android:windowTranslucentStatus">true</item> 
</style> 
</resources> 
+0

Как выглядит ваш экран? вы можете добавить скриншот? –

+0

@Williams Я добавил снимок экрана из моей активности – ik024

+0

У него просто нет панели инструментов ничего не найдено – ik024

ответ

1

я пропустил некоторые важные заявления в моей деятельности. Вот полная деятельность, оставшаяся остается прежней. Со следующими изменениями я смог добавить новый NavigationDrawer

public class MainActivity extends ActionBarActivity { 

ActionBarDrawerToggle mDrawerToggle; 

DrawerLayout mDrawerLayout; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.open_navigation_drawer, R.string.close_navigation_drawer); 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); //<---- added 
    getSupportActionBar().setHomeButtonEnabled(true); //<---- added 

} 


@Override 
public boolean onOptionsItemSelected(MenuItem item) { //<---- added 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

@Override 
protected void onPostCreate(Bundle savedInstanceState) { //<---- added 
    super.onPostCreate(savedInstanceState); 
    mDrawerToggle.syncState(); // important staetment for drawer to identify its state 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { //<---- added 
    super.onConfigurationChanged(newConfig); 
    mDrawerToggle.onConfigurationChanged(newConfig); 
} 

@Override 
public void onBackPressed() { 
    if(mDrawerLayout.isDrawerOpen(Gravity.START|Gravity.LEFT)){ //<---- added 
     mDrawerLayout.closeDrawers(); 
     return; 
    } 
    super.onBackPressed(); 
} 
} 
Смежные вопросы