# Native Code > برنامه نویسی موبایل > Android Studio >  ساخت sliding menu در سمت راست بوسیله navigation drawer (آموزش)

## gilas1368

سلام به همه دوستان عزیز
خب باتوجه به اینک خیلی از دوستان مشکل sliding menu در سمت راست رو دارن، و چندتا از دوستان هم توی پیام خصوصی خواستن ک کد sliding menu RTL رو براشون تکمیل کنم ک از همینجا بایت تاخیرم ازشون عذرخواهی میکنم.
لذا بهتر دونستم ی برنامه با ی نمونه عملی این مشکل دوستان رو برای همیشه حل کنم

*لازم به ذکره من از Navigation Drawer استفاده کردم و از اندروید استدیو هم استفاده میکنم.


*خب میریم سواغ آموزش

 ی پروزه بسازید

1- داخل لایه activity_main هرچی هست رو پاک کنین و کدای زیر رو بهش اضافه کنین:


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




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




</android.support.v4.widget.DrawerLayout>
این کداها همون Navigation drawer ما هستن ک داخلش ی لیست قرار داره

2- کدای زیر رو به فایل string موجود در پوشه value اضافه کنین:

    <string-array name="planets_array">
        <item>Mercury</item>
        <item>Venus</item>
        <item>Earth</item>
        <item>Mars</item>
        <item>Jupiter</item>
        <item>Saturn</item>
        <item>Uranus</item>
        <item>Neptune</item>
    </string-array>
این آرایه آیتم های روی لیست مون رو تشکیل میده

3- حالا به قسمت کدها میریم و متغیرهای زیر رو به ابتدای برنامه اضافه میکنیم:

    private String[] mPlanetTitles;    
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;

4- و در آخر کدای زیر رو ب تابع oncreate و بعد از متد setContentView اضافه میکنیم:

        mPlanetTitles = getResources().getStringArray(R.array.planets_arra  y);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);




// Set the adapter for the list view
        mDrawerList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, mPlanetTitles));
        mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
                if (position >= 0) {
                    Toast.makeText(getBaseContext(), String.valueOf(position), Toast.LENGTH_LONG)
                            .show();
                    mDrawerList.setItemChecked(position, true);
                    setTitle(mPlanetTitles[position]);
                    mDrawerLayout.closeDrawer(mDrawerList);
                }
            }
        });

خب حالا اگ برنامه رو اجرا کنین و صفحه اتون رو از سمت راست به چپ swip کنین sliding menu براتون به نمایش درمیاد.

اینم فایل های برنامه:

Sliding menu RTL

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

اگ سوال یا مشکلی داشتید در خدمتم.

----------


## hamedg1366

مرسی گیلاس جان

کدهاتون بسی زیبا هستن ؛

----------


## Ebrahimkh

سلام
یه سوال


اگه بخواهیم آیکنها در سمت راست نوشته قرار بگیرند چیکار باید کنیم

خواهش یه نگاه هم به اینجا بندازید :قلب: 
https://barnamenevis.org/showthread.p...A7%D8%B3%D8%AA

----------


## dalmif

گیلاس جان ممنون از آموزشت.
من قبلا این کار رو کردم اما الان لازم دارم که پس از کلیک بر روی یک آیتم به صورت خودکار منوی سمت راست بسته بشه

----------


## gilas1368

> سلام
> یه سوال
> 
> 
> اگه بخواهیم آیکنها در سمت راست نوشته قرار بگیرند چیکار باید کنیم
> 
> خواهش یه نگاه هم به اینجا بندازید
> https://barnamenevis.org/showthread.p...A7%D8%B3%D8%AA



کدتون رو بزارید تا بهتر بتونم کمکتون کنم

اما برای چیزی ک میخاید باید ی لایه برای لیست ویو طراحی کنین

اگ وقت پیدا کنم ی نمونه براتون میذارم

----------


## gilas1368

> گیلاس جان ممنون از آموزشت.
> من قبلا این کار رو کردم اما الان لازم دارم که پس از کلیک بر روی یک آیتم به صورت خودکار منوی سمت راست بسته بشه


dalmif عزیز الان هم روی هرکدوم از آیتم های لیست ویو بزنید منو بسته و Title اکتیویتی تغییر میکنه

اگ من بد متوجه شدم بگید دقیقا چی میخاید تا کمکتون کنم اگ در توانم باشه

----------


## moh355

چرا واسه من موقع تعریف متغیر به صورت زیر خطا میده . DrawerLayout نمیشناسه . 
private DrawerLayout mDrawerLayout;

----------


## gilas1368

رفرنسش رو اضافه کردید به IDEاتون؟
از چ محیطی برای کدنویسی استفاده میکنین؟
احتمالا حدس من اینه ک از ایکلیپس دارید استفاده میکنید
چون معمولا این خطاها رو ایکلیپس میده

----------


## moh355

> رفرنسش رو اضافه کردید به IDEاتون؟
> از چ محیطی برای کدنویسی استفاده میکنین؟
> احتمالا حدس من اینه ک از ایکلیپس دارید استفاده میکنید
> چون معمولا این خطاها رو ایکلیپس میده


منظورتون از اضافه کردن رفرنس چیه ؟ من تازه اندروید شروع کردم خیلی حرفه ای نیستم :خجالت:  . محیط برنامه نویسی هم android studio..ممنون بابت جوابتون

----------


## saso_008

منم همین مشکل دارم میشه کمک کنید لطفا 
من با ایکلیپس مینویسم

----------


## gilas1368

تمام کدهاى جاواتون رو بذاريد

----------


## saso_008

کدهای جاوا دقیقن همون کدهای خودتونه فقط DrawerLayout رو نمیشناسه !!!

----------


## saso_008

کدهای جاوا دقیقن همون کدهای خودتونه فقط DrawerLayout   رو نمیشناسه !!!

----------


## gilas1368

ideاتون پيشنهادى بهتون نميده؟
نبايد چنين مشکلى براتون پيش بياد

----------


## saso_008

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

----------


## gilas1368

دوستانی که با drawerlayout مشکل دارن این تاپیک رو مطالعه کنن.

----------


## meysam jahedi

نمیدونم چرا اینجوری خطا میده
03-02 16:00:12.398: E/AndroidRuntime(1737): FATAL EXCEPTION: main
03-02 16:00:12.398: E/AndroidRuntime(1737):  android.app.SuperNotCalledException: Activity  {com.example.slidmenu2/com.example.slidmenu2.MainActivity} did not call  through to super.onCreate()
03-02 16:00:12.398: E/AndroidRuntime(1737):     at android.app.ActivityThread.performLaunchActivity(A  ctivityThread.java:1922)
03-02 16:00:12.398: E/AndroidRuntime(1737):     at android.app.ActivityThread.handleLaunchActivity(Ac  tivityThread.java:1981)
03-02 16:00:12.398: E/AndroidRuntime(1737):     at android.app.ActivityThread.access$600(ActivityThre  ad.java:123)
03-02 16:00:12.398: E/AndroidRuntime(1737):     at android.app.ActivityThread$H.handleMessage(Activit  yThread.java:1147)
03-02 16:00:12.398: E/AndroidRuntime(1737):     at android.os.Handler.dispatchMessage(Handler.java:99  )
03-02 16:00:12.398: E/AndroidRuntime(1737):     at android.os.Looper.loop(Looper.java:137)
03-02 16:00:12.398: E/AndroidRuntime(1737):     at android.app.ActivityThread.main(ActivityThread.jav  a:4424)
03-02 16:00:12.398: E/AndroidRuntime(1737):     at java.lang.reflect.Method.invokeNative(Native Method)
03-02 16:00:12.398: E/AndroidRuntime(1737):     at java.lang.reflect.Method.invoke(Method.java:511)
03-02 16:00:12.398: E/AndroidRuntime(1737):     at com.android.internal.os.ZygoteInit$MethodAndArgsCa  ller.run(ZygoteInit.java:784)
03-02 16:00:12.398: E/AndroidRuntime(1737):     at com.android.internal.os.ZygoteInit.main(ZygoteInit  .java:551)
03-02 16:00:12.398: E/AndroidRuntime(1737):     at dalvik.system.NativeStart.main(Native Method)

----------


## ansaralghaem

سلام دوستان لطفا یکی به من کمک کنه منو کشویی با ز شو با کلید میخوام واسه اندروید 2.1 لطفا کمک کنید من با اندروید استودیو کار می کنم

----------


## gilas1368

بیشتر توضیح بدید
من دقیق متوجه نشدم
ینی ی slide menu میخواید ک وقتی روی ی دکمه کلیک میکنید باز بشه؟

----------


## tux-world

آموزش خوبیه فقط چند تا نکته داره اون هم اینکه کلیدی اگه بخوایید برای باز شدنش بزارید چیکار باید بکنید. منظورم چه اکشن بار باشه چه اکشن بار دستی و اینکه در صورتی که کاربر بخواد تو صفحه عادی چیزی بزاره صفحه داشته باشه مثلا با منو چیکار کنه. این آموزش فقط منو هستش  :لبخند:  تستش هم که کردم رو آیتمها که کلیک میکنید اتفاقی نمی افته یعنی Toast کار نمیکنه

----------


## gilas1368

> آموزش خوبیه فقط چند تا نکته داره اون هم اینکه کلیدی اگه بخوایید برای باز شدنش بزارید چیکار باید بکنید. منظورم چه اکشن بار باشه چه اکشن بار دستی و اینکه در صورتی که کاربر بخواد تو صفحه عادی چیزی بزاره صفحه داشته باشه مثلا با منو چیکار کنه. این آموزش فقط منو هستش  تستش هم که کردم رو آیتمها که کلیک میکنید اتفاقی نمی افته یعنی Toast کار نمیکنه


دوست و استاد خوبم tux-world عزیز
از اینکه برنامه رو نصب و تست کردید خیلی ممنون و سپاسگزارم، منت گذاشتید بر این حقیر
اما چیزی که هست من دقیق متوجه منظور شما نشدم

اگ مجبت کنین و بیشتر توضیح بدید ممنون میشم

----------


## tux-world

خواهش میکنم. وقتی رو آیتم ها کلیک میشه من Toast گذاشتم نشون نمیداد و اینکه تو نسخه های پایین اندروید هم مشکل داره البته من اصلاحش کردم و برات میفرستم. دستت درد نکنه  :لبخند: 

http://uplod.ir/2lssuny81lc1/Aquarium.zip.htm

----------


## gilas1368

ممنون از لطفتون و وقتی ک گذاشتید
راستش من روی اندروید2.2 تستش کردم و کار کرد
اما بازم خیلی ممنونم :)

----------


## ansaralghaem

> بیشتر توضیح بدید
> من دقیق متوجه نشدم
> ینی ی slide menu میخواید ک وقتی روی ی دکمه کلیک میکنید باز بشه؟


سلام دوست عزیز یه اسلاید منو میخوام مثل برنامه باد صبا که هم با کشید باز میشه و هم با زدن دکمه بالا سمت راست واسه اندروید 2.1 به بالا همچنین من با اندروید استودیو کار می کنم خیلی فوریه اگر لطف کنید راهنمایی کنید ممنون میشم

----------


## gilas1368

شما با کد زیرو اگ توی رویداد کلیک دکمه اتون فراخوانی کنین اون منو باز میشه

*mDrawerLayout*.openDrawer(*mDrawerList*);

و با کد زیر میتونید منو رو ببندید:

mDrawerLayout.closeDrawer(*mDrawerList*);

----------


## ansaralghaem

با تشکر از شما مشکلم حل شدی چیزی که من میخواستم رو پیدا کردم یک آموزش بسیار عالی بدون نیاز به کتابخانه خاصی در اینجا هست
http://answers.uncocoder.com/questio...8%D8%B2%D8%B4-

بازم ممنونم

----------


## هزاره سوم

واقعا ممنون.این دو روزه متن های زیادی دیدم که یا کدش کار نمیکرد یا من چون تازه کار بودم خوب متوجه نمیشیدم..ولی این تاپیک شما و مخصوصا کد هاتون توی برنامه من کار کرد و خواستم بگم که ممنون.

----------

