ساخت navigation drawer در کمتر از 1 دقیقه (آموزشی)
اخیرا میخواستم برای وبسایتم آموزش ساخت 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 تعریف کردید نحوه کار رو شرح بدید. و یا اگر از امکانات زیاد این کتابخونه استفاده کردید اونها رو همینجا معرفی کنید که دیگران سریعتر بتونن از این امکانات استفاده کنن.
این خطا ناشی از gradle هست! چطور باید برطرفش کنم ؟
من اون قسمت Repository ها رو هم که گفته بودید update کردم !
البته یه مشکل اساسی دیگه هم دارم که اگه راهنماییم کنید ممنون میشم!
من هر سری که میخوام یه کتاب خونه به اندروید استدیو اضافه کنم ، دکمه Sync Project with Gradle files یا Clean Project رو میزنم که Gradle رو مجددا build کنه ولی متاسفانه از فایل R ایراد میگیره
وهرکاری بکنم دیگه اون خطا برطرف نمیشه و نمیتونم پروژه رو run کنم و عملا دیگه اون پروژه بی استفاده میشه ! و مجبور میشم از نو یه پروژه جدید تعریف کنم و پروژه ی قبلی رو Del کنم!! که باید تمام فایل های پروژه رو دونه دونه توی پروژه ی جدید کپی کنم که عملا کار طاقت فرساییه !!
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .