ساخت Navigation Drawer

برای ساخت NavigationDrawer :

کد زیر را به اکتیویتی main خود اضافه کنید :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent" 
android:layout_width="fill_parent" 
>
    <android.support.v4.widget.DrawerLayout 
            android:id="@+id/mainActivity_layoutDrawer" 
            android:layout_gravity="start" 
            android:layout_height="match_parent" 
            android:layout_width="match_parent">

        <FrameLayout 
              android:id="@+id/mainActivity_content_frame" 
              android:layout_height="match_parent" 
              android:layout_width="wrap_content">
             <include layout="@layout/navigation_drawer"/>
       </FrameLayout>
    </android.support.v4.widget.DrawerLayout>
</RelativeLayout>

layout به اسم navigation_drawer بسازید :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/linearDrawer" 
     android:layout_height="match_parent" 
     android:layout_width="240dp" 
     android:orientation="vertical" 
     android:layout_gravity="left" 
     android:background="#ccc">

    <ListView 
         android:id="@+id/navigationDrawer_listView" 
         android:layout_height="match_parent" 
         android:layout_width="match_parent"
         android:background="#ccc" 
         android:divider="#292929" 
         android:dividerheight="1px" 
         android:layout_gravity="start" />
</LinearLayout>

نکته : توجه کنید که layout_gravity لیست ListView و LinearLayoutاگر start باشد منو سمت چپ

و اگر right باشد منو سمت راست خواهد بود.

خب منو ساخته شده حالا باید آیتم هارا به آن اضافه کرد و دکمه باز و بسته شدن را به آن اضافه کرد

:

۳ خط زیر را به کلاس MainActivity اضافه کنید :

 private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;

حالا در onCreate تعریف می کنیم :

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);

mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description for accessibility */
R.string.drawer_close /* "close drawer" description for accessibility */
) {
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(mTitle);
supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
public void onDrawerOpened(View drawerView) {
getSupportActionBar().setTitle(mDrawerTitle);
supportInvalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);

mDrawerToggle همان دکمه کوچک ۳ خطی هست که باز و بسته می شود که در بالا تعریف کردیم

حالا با کد های آیتم های لیست را می سازیم ، سایه دلخواه را می دهیم و دکمه خانه را فعال می کنیم

.

mDrawerList.setAdapter(adapter);
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
// set a custom shadow that overlays the main content when the drawer opens
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, 

GravityCompat.START);
// enable ActionBar app icon to behave as action to toggle nav drawer
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);

حالا فقط کد های زیر را باید به کلاس اضافه کنید تا کار تمام شود :

/**
* When using the ActionBarDrawerToggle, you must call it during
* onPostCreate() and onConfigurationChanged()...
*/
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggls
mDrawerToggle.onConfigurationChanged(newConfig);
}



  @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if (mDrawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
}

برچسب ها:
پست قبلی
پست بعدی

درباره ایلیا عابدینی

برنامه نویس اندروید و کارشناس مهندسی پزشکی، نفر سوم مسابقه برنامه نویسی اندروید http://www.schallenge.ir ، از سال 92 برنامه نویسی اندروید رو شروع کردم و در حال حاضر در شرکت عصر دانش در حال توسعه اپلیکیشن تجارت پی می باشدم ، این وبلاگ رو ساختم تا تجربیات روزانه و مفید خودم رو داخل اون بزارم. رزومه : iact.ir/cv

4 دیدگاه

  1. سلام.. ممنون از آموزشتون

    اگه بخوایم با یک ایمیج ویو منو رو باز و بسته کنیم با چ کدی میتونیم اینکارو کنیم؟؟

    ینی همون دکمه ۳خطی رو تو یه ایمیج بزاریم.

  2. سوررس حتما بزارید

  3. باسلام وخسته نباشید

    مهندس بدون سورس کدها اصلا نمیشه یاد گرفت چون کدهاتون ناقص هست مثلا  تو اینجا

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

    اصلا معلوم نیست   

    drawer_layout

    آی دی چه هست!

    باتشکر از زحمتی که کشیدیند

  4. سلام و خسته نباشید
    چطور میشه دکمه ای که برای باز و بسته شدن استفاده میشه رو به سمت راست اکشن بار انتقال داد؟

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نمی شود.علامت دارها لازمند. *

*

رفتن به بالا