آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

ساخت navigation drawer در کمتر از 1 دقیقه (آموزشی)

Rabbit  8 سال پیش  7 سال پیش
+21 0

اخیرا میخواستم برای وبسایتم آموزش ساخت navigation drawer رو بذارم. بینِ روش‌های مختلف شک داشتم. در نهایت تصمیم گرفتم ساده‌ترین روشی که وجود داره رو قرار بدم. الان هم میخوام همون روش رو اینجا بذارم. 

توجه کنید در این روش هیچ نیازی به طراحی xml نیست و تماما بصورت کد انجام میشه.

قصد داریم از این کتابخونه استفاده کنیم.

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

compile('com.mikepenz:materialdrawer:5.7.0@aar') {
    transitive = true
}

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

سپس به کلاسی که قصد دارید داخلِ اون navتون رو بسازید برید و خط‌های زیر رو داخلِ onCreate اضافه کنید:

   final PrimaryDrawerItem itemHome = new PrimaryDrawerItem().withIdentifier(1).
                withName(R.string.drawer_item_home).
                withSelectable(false);
 
        final SecondaryDrawerItem itemSettings = new SecondaryDrawerItem().withIdentifier(2)
                .withName(R.string.drawer_item_settings)
                .withSelectable(false);
 
        final SecondaryDrawerItem itemSearch = new SecondaryDrawerItem().withIdentifier(3)
                .withName(R.string.drawer_item_search)
                .withSelectable(false);
 
        Drawer result = new DrawerBuilder()
                .withActivity(this)
                .withToolbar(mToolbar)
                .addDrawerItems(
                        itemHome,
                        new DividerDrawerItem(),
                        itemSearch,
                        itemSettings
                )
                .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
                    @Override
                    public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
                        if (drawerItem.equals(itemHome)) {
                            Toast.makeText(MainActivity.this, "Home!", Toast.LENGTH_SHORT).show();
                        }
                        if (drawerItem.getIdentifier() == itemSettings.getIdentifier()) {
                            Toast.makeText(MainActivity.this, "Settings", Toast.LENGTH_SHORT).show();
                        }
                        if (drawerItem.getIdentifier() == itemSearch.getIdentifier()) {
                            Toast.makeText(MainActivity.this, "Search", Toast.LENGTH_SHORT).show();
                        }
                        return true;
                    }
                })
                .build();

حالا پروژه رو اجرا کنید.

تبریک میگم. nav شما آماده‌ست!

این کتابخونه از rtl یا راست چین پشتیبانی میکنه. برای راستچین کردنِ منو کافیه خط زیر رو به قبل از build اضافه کنید:

                 .withDrawerGravity(Gravity.RIGHT)

 البته همونطور که قبلا گفتم این کتابخونه وقتی راست چین میشه تصاویر رو در سمتِ چپِ متن قرار میده. اگر خیلی سخت‌گیر باشید برای تغییر باید خودتون یک custom Item تعریف کنید و به nav اضافه کنید. که شاید در آینده اون رو هم آموزش بدم.

توصیه میکنم دوستان که از کتابخونه استفاده میکنن تجربه‌هاشون رو اینجا به اشتراک بذارن. مثلا اگه یک custom item تعریف کردید نحوه کار رو شرح بدید. و یا اگر از امکانات زیاد این کتابخونه استفاده کردید اون‌ها رو همین‌جا معرفی کنید که دیگران سریع‌تر بتونن از این امکانات استفاده کنن.

+1 0
برا من کار نمیکنه !! (7 سال پیش)
+1 0
چطور میتونم عکس بذارم تو قسمت نظرات ؟ یا باید به عنوان پاسخ درج کنم ؟ (7 سال پیش)
0 0
عالی بود rabbit جان. واقعا تو کمتر از یک دقیقه run شد. (7 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
Dolphin Tech  7 سال پیش
+1 0

این خطا ناشی از gradle  هست! چطور باید برطرفش کنم ؟
من اون قسمت Repository  ها رو هم که گفته بودید update کردم !

البته یه مشکل اساسی دیگه هم دارم که اگه راهنماییم کنید ممنون میشم!  
من هر سری که میخوام یه کتاب خونه به اندروید استدیو اضافه کنم ، دکمه Sync Project with Gradle files یا Clean Project رو میزنم که Gradle رو مجددا build کنه ولی متاسفانه از فایل R ایراد میگیره

وهرکاری بکنم دیگه اون خطا برطرف نمیشه و نمیتونم پروژه رو run کنم و عملا دیگه اون پروژه بی استفاده میشه ! و مجبور میشم از نو یه پروژه جدید تعریف کنم و پروژه ی قبلی رو Del کنم!!  که باید تمام فایل های پروژه رو دونه دونه توی پروژه ی جدید کپی کنم  که عملا کار طاقت فرساییه !!

+1 0
بخاطرِ اینه که شما تویِ build.gradle پروژه اضافه میکنید. باید به build.gradleـه اپلیکیشن اضافه کنید. دو تا گریدل داریم یکی داخلی یکی بیرونی. شما به بیرونی اضافه می‌کنید در صورتی که به داخلی باید اضافه شه. تویِ سایت توضیح دادم فرقشون رو (7 سال پیش)
+1 0
اتفاقا حواسم به این نکته بود! من فکر میکنم مشکل از نسخه API هست ، از چه نسخه ای باید استفاده کنیم ؟ و اینکه اصولا از کجا میشه فهمید برای هر کتابخونه ای از چه API ای باید استفاده کرد ؟ (7 سال پیش)
+2 0
عموما min SDK رو 15 یا بالاتر میذاریم. Target رو هم توصیه میشه رویِ آخرین ورژن موجود بذارید. ولی بعضی‌ها نمیخوان درگیرِ permission تویِ اندروید جدید بشن برای همین target رو 22 میذارن. (7 سال پیش)
+1 0
من طبق آموزش های استاد تا حالا روی 8 میذاشتم !! (7 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .