ساخت منو کشویی (Navigation Drawer) متریال دیزاین

منوی کشویی | Navigation Drawer
یکی از قابلیت‌های پرکاربرد در برنامه‌های موبایلی و بخصوص اپلیکیشن‌های اندرویدی، استفاده از منوی کشویی است که در حالت پیش فرض مخفی بوده و با کشیدن انگشت از حاشیه صفحه نمایش به سمت چپ یا راست، ظاهر می‌شود. البته باز شدن این منو می‌تواند توسط لمس یک آیتم درون تولبار نیز انجام شود. در این بخش به نحوه در این فصل به نحوه ساخت منوی کشویی یا Navigation Drawer (Sliding Menu) در اندروید می پردازیم که شامل مباحث زیر می باشد:

آنچه در این آموزش می‌خوانید:

  • معرفی Navigation Drawer در اندروید
  • نحوه کار با DrawerLayout و NavigationView
  • معرفی Header و Menu در منوی کشویی
  • حذف اکشن بار پیش فرض اندروید و جایگزینی ان با تولبار برای استفاده در منوی کشویی
  • کار با متدهای addDrawerListener، ActionBarDrawerToggle، setNavigationItemSelectedListener، onNavigationItemSelected، onBackPressed
  • Transparent یا شفاف کردن استاتوس بار
  • نمایش تصویر پروفایل به صورت دایره ای

این مبحث در قالب PDF و در ۳۰ صفحه تهیه شده که در ادامه چند صفحه ی ابتدایی آن قرار داده شده:

معرفی Navigation Drawer یا منوی کشویی:

Navigation Drawer یا Sliding Menu یا منوی کشویی به پنلی گفته می شود که منوی اصلی اپلیکیشن را نمایش می دهد. این منو در حالت عادی از دید کاربر مخفی است که با کشیدن صفحه به سمت راست و یا لمس آیکون موجود در تولبار، ظاهر می شود. منو کشویی از یک Header و Menu تشکیل می شود. NavigationDrawer توسط اندروید معرفی شده و به راحتی و با استفاده از کتابخانه Design Support قابل اجراست.
جزئیات بیشتر در لینک زیر:

https://material.io/guidelines/patterns/navigation-drawer.html

ساخت Navigation Drawer:

یک پروژه با نام NavigationDrawer و MinimumSDK 17 ساخته و مراحل ساخت منوی کشویی را شرح می دهم.
همانطور که در پاراگراف قبل اشاره شد، برای استفاده از NavigationDrawer پیش فرض اندروید لازم است ابتدا کتابخانه design را به پروژه اضافه کنیم. یعنی علاوه بر کتابخانه appcompat به کتابخانه design هم نیاز داریم. به build.gradle رفته و مانند مبحث تولبار که appcompat را به پروژه اضافه کردیم، کتابخانه design را اضافه می کنم:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'
    implementation 'com.android.support:design:26.1.0'
}

در این پروژه من فقط به appcompat-v7 و design نیاز دارم بنابراین سایر موارد را حذف می کنم تا درک آن برای شما نیز ساده تر باشد:

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:design:26.1.0'
}

نکته: در نسخه ۳ اندروید استودیو که گریدل نیز ارتقا یافته، در افزودن کتابخانه ها بجای compile از implementation استفاده شده که البته فعلا هردو گزینه قابل استفاده است./

NavigationDrawer را در اکتیویتی اصلی پروژه تعریف می کنم و سایر اکتیویتی ها یا فرگمنتها و… از طریق گزینه های منوی کشویی در دسترس خواهند بود. محتوای activity_main.xml را حذف کرده و layout از جنس android.support.v4.widget.DrawerLayout جایگزین آن می کنم:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout>

</android.support.v4.widget.DrawerLayout>

حالا DrawerLayout را به صورت زیر تکمیل می کنم:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

</android.support.v4.widget.DrawerLayout>

در ابتدا عرض و ارتفاع را برابر match_parent تنظیم کرده، سپس برای آن یک id درنظر گرفتم. خاصیت android:fitsSystemWindows و مقدار true باعث می شود تا DrawerLayout تمام سطح اکتیویتی را دربر گیرد. در نهایت tools:openDrawer با مقدار start به این معنی است که منو از سمت چپ صفحه باز شود (با مقدار end منو از سمت راست باز می شود).
در قدم بعد لازم است یک NavigationView به DraweLayout اضافه کنم. NavigationView در کتابخانه design تعریف شده بنابراین به این صورت به اکتیویتی اضافه می شود:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <android.support.design.widget.NavigationView />


</android.support.v4.widget.DrawerLayout>

header و menu در NavigationView قرار می گیرد. ابتدا attribute های لازم را به تگ اضافه کرده و سپس اقدام به ساخت header و menu و افزودن آنها به NavigationView خواهم کرد.
در قسمت Preview پنل منو با پس زمینه سفید مشاهده می شود:

Sliding Menu به اکتیویتی اضافه شد

در ادامه ابتدا لازم است اکشن بار پیش فرض اندروید را حذف کرده و با تولبار جایگزین کنم که در مبحث قبل به صورت کامل به این موضوع پرداخته شد.
در تم AppTheme و در قسمت parent، DarkActionBar را با NoActionBar جایگزین کردم تا اکشن بار حذف شود. سپس در رایرکتوری layout یک لایه مخصوص تولبار با نام دلخواه toolbar.xml ایجاد می کنم که من نوع این لایه را RelativeLayout تعیین کرده ام:

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

    <android.support.v7.widget.Toolbar
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        android:id="@+id/m_toolbar"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/>

</RelativeLayout>

سپس توسط تگ include فایل layout تولبار را به layout اکتیویتی اصلی پروژه اضافه می کنم:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        android:id="@+id/navigation_view"/>

</android.support.v4.widget.DrawerLayout>

عرض و ارتفاع این تگ را نیز match_parent تعیین کردم تا تولبار به صورت کامل نمایش داده شود.
در نهایت Toolbar را درون MainActivity.java تعریف می کنم:

package ir.android_studio.navigationdrawer;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;

public class MainActivity extends AppCompatActivity {

    Toolbar mToolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mToolbar = (Toolbar) findViewById(R.id.m_toolbar);
        setSupportActionBar(mToolbar);

    }
}

پروژه را اجرا می کنم:

اکشن بار حذف شده است

با کشیدن صفحه نمایش به سمت راست، یک پنل خالی با پس زمینه سفید ظاهر می شود که تولبار نیز زیر آن قرار گرفته است.
در قدم بعد باید محتویات NavigationView را کامل کنم. ابتدا Header را می سازم.
یک فایل با نام دلخواه nav_header.xml و از نوع LinearLayout به دایرکتوری layout پروژه اضافه می کنم:

اضافه کردن Header به Navigation Drawer

اگر منوی چند اپلیکیشن را بررسی کنید در قسمت هدر عموما یک تصویر (آواتار) به همراه اطلاعات شخص قرار گرفته است. من ابتدا یک تصویر پس زمینه برای هدر تعیین کرده و سپس آواتار، نام و ایمیل را اضافه می کنم:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="160dp"
    android:padding="16dp"
    android:background="@drawable/nav_header"
    android:gravity="bottom"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">

</LinearLayout>

ارتفاع استاندارد برای هدر ۱۶۰dp است. یک padding نیز اضافه کردم تا عناصر از دیواره هدر فاصله داشته باشند. در خط بعد تصویری که به دایرکتوری drawable اضافه کرده ام را به عنوان background تعریف کردم. خاصیت gravity با مقدار bottom نیز باعث می شود تا عناصری که به هدر اضافه می کنیم، به جای آنکه از بالای هدر به سمت پایین زیر یکدیگر قرار گیرد، از انتهای هدر به طرف بالا چینش انجام شود.
هدر را به اینصورت تکمیل می کنم:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="160dp"
    android:padding="16dp"
    android:background="@drawable/nav_header"
    android:gravity="bottom"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">

    <ImageView
        android:layout_width="56dp"
        android:layout_height="56dp"
        android:src="@drawable/avatar"
        android:scaleType="centerCrop"
        android:contentDescription="Profile Picture"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="SeyedMahdi Motahhari"
        android:paddingTop="8dp"
        android:textAppearance="@style/TextAppearance.AppCompat.Body1"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="info@android-studio.ir"
        android:paddingTop="4dp"/>

</LinearLayout>

یک ImageView برای نمایش تصویر پروفایل (آواتار) و دو TextView برای نام و ایمیل.
خاصیت contentDescription به عنوان توضیحات تصویر و textAppearance برای استایل دهی به متن بکار رفته که مقادیر زیادی برای استفاده در قسمت های مختلف پروژه در اختیار داریم:

خاصیت textAppearance در اندروید

واضح است که هر تغییراتی اعم از تغییر رنگ متون، اندازه و … را به راحتی می توان روی اینها انجام داد که به سلیقه و هدف توسعه دهنده بستگی دارد.

هدر به اینصورت تکمیل شد:

پیش نمایش Header

تصویر نهایی پروژه:

پیش نمایش نهایی پروژه ساخت منوی کشویی در اندروید

جهت مطالعه ادامه آموزش، فایل PDF را دانلود نمائید

توجه : سورس پروژه داخل پوشه Exercises قرار داده شده است.

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

دانلود نسخه کامل این آموزش به همراه سورس پروژه
تعداد صفحات : ۳۰
حجم : ۲ مگابایت
قیمت : ۸ هزار تومان
توجه: صرفا در صورتی از درگاه پشتیبان استفاده کنید که قادر به پرداخت از طریق سبد دانلود نباشید.
افزودن به سبد دانلود درگاه پشتیبان
این مطلب چقدر برایتان مفید بود؟ لطفا امتیاز دهید
4.1/5 - (15 امتیاز)
پرسش‌ها و دیدگاه‌های کاربران
دوره آموزش برنامه نویسی اندروید
دوره آموزش برنامه نویسی اندروید

با دریافت این دوره به تمامی آموزش‌های غیر رایگان و رایگان موجود در وب سایت دسترسی دارید که تخفیفی برای آموزش‌های غیر رایگان نیز درنظر گرفته شده. این پکیج به دو صورت دانلودی و ارسال پستی ارائه می‌گردد.
آموزش‌های اندروید استودیو در دو دسته «پایه» و «تکمیلی» منتشر می‌شوند.
آموزش‌های پایه شامل مباحث اصلی و ضروری و آموزش‌های تکمیلی مطالبی است که می‌بایست در کنار مطالب اصلی بررسی شود.
با خرید این دوره، به تمامی آموزش‌های غیر رایگانی که در آینده منتشر می‌شود نیز به صورت رایگان دسترسی خواهید داشت!

یک دیدگاه بنویسید

پرسش‌های زیر تایید و پاسخ داده نـــخواهند شد:
۱: جزء موارد مطرح شده در صفحات مشکلات و پرسش‌های رایج و بروزرسانی‌های محتوای آموزشی باشد
۲: سوال قبلا توسط کاربران در دیدگاه‌ها مطرح و پاسخ داده شده باشد
۳: پرسش خارج از مبحث آموزشی موجود در این صفحه باشد

  • محمد گفت:

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

  • هادی گفت:

    سلام من
    وقتی راست به چپ و متن فارسی مینویسم نشون نمیده

  • kasra گفت:

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

  • کیوان نیک فرجام گفت:

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

    • سیدمهدی مطهری گفت:

      سورس پروژه رو ایمپورت کنید ببینید بازم مشکل وجود داره؟
      آموزش ایمپورت کردن سورس پروژه:
      https://android-studio.ir/import-android-project-in-android-studio

  • مرتضوی گفت:

    خیلی خوب توضیح دادید خدا قوت

  • فرزاد عسکری گفت:

    سلام مهندس / مطمئنا برای کتابخانه قبلی اندروید هست برای تبدیل به کتابخانه ای از نوع Android X چی کار باید بکنم/ و وقتی کتابخانه Design رو از File> Project structure دریافت می کنم از نوع Android X نیست و ارور میده که خودم یه X به کتابخانه در dependencies اضافه می کنم/ تصویر:
    https://s4.uupload.ir/files/اندروید_bxrg.jpg
    https://s4.uupload.ir/files/اندروید_ایکس_۴ifv.jpg
    و در activity_main.xml همچین اروری میده/ تصویر:
    https://s4.uupload.ir/files/screenshot_2021-08-08_081616_37kr.jpg
    ممنون/ از وقتی که گذاشته اید/

    • سیدمهدی مطهری گفت:

      آموزش مهاجرت به AndroidX رو مطالعه کنید:
      https://android-studio.ir/androidx-migration-guide

      • فرزاد عسکری گفت:

        سلام/قبلا تبدیل به Android X کردم برا هر پروژه جدید که شروع می کنی مگه لازمه تبدیل کنی؟؟؟؟؟؟؟؟؟
        غیر از این یه بار دیگه به صورت آنلاین تبدیل کردم که این پیغام رو داد و تبدیل متوقف شد:
        https://s4.uupload.ir/files/screenshot_2021-08-09_053037_475p.jpg

        • سیدمهدی مطهری گفت:

          پروژه جدیدی که میسازید پیش فرض AndroidX هستش. اگه پروژه قدیمی ایمپورت/باز کنید لازمه تبدیل بشه.
          در مورد ارور اسکرین شات اطلاعی ندارم. سرچش کنید

          • فرزاد عسکری گفت:

            به نظرم مهندس/به جای از کتابخانه Design باید در Android X از <com.google.android.material.navigation.NavigationView از کتابخانه material استفاده کنیم/ که این کار رو انجام دادم درست شد البته با API21.

  • pejman گفت:

    سلام من پکیج کامل رو تهیه کردم و واقعا از اموزش هاتون استفاده کردم و اینکه واقعا قیمتشون کمه…و تشکر میکنم…یه مشکل که دارم میخام میخام توی قسمت هدر اون کرکره که ایمیل ها رو نمایش میده رو از پروفایل جدا کنم و یک ابجکت دیگه نمایش بدم…مثلا ماشین…به این شکل که یوزر ما عکس بالا باشه یعنی این یوذر لاگین کرده و ماشین هاش (مثلا سه تا ماشین داره ) توی کرکره نمایش داده بشه…و هر کدوم رو انتخاب کرد تو ان کلیک براش دستور بزاریم…خود اقای مایک پنز یه چیزایی گفته اما بخدا اصلا قابل درک نیست برام.
    https://github.com/mikepenz/MaterialDrawer/issues/740
    لطفا راهنمایی کنید.تشکر

  • عطیه موسوی گفت:

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

  • سیدمحمود نواب گفت:

    با عرض سلام و ارادت .
    من اندروید ۱۰ و اندروید استودیو ورژن ۴٫۰ نصب کردم . در اضافه کردن کتابخانه design مشکل دارم . یعنی اصلا چنین کتابخونه ای رو نمیشناسه . ضمنا کتابخانه appcompact من ۱٫۱٫۰ هست . ممنون میشم راهنمایی بفرمایید

  • پدرام گفت:

    سلام لطفا مطالب رو بروز کنید الان با androidx توضیح بدید

    • سیدمهدی مطهری گفت:

      نیازی به بروزرسانی تک تک مباحث نیست. شدنی هم نیست در کوتاه مدت. در مطلب زیر توضیحات مربوط به مهاجرت به androidX توضیح داده شده:
      https://android-studio.ir/androidx-migration-guide

  • سید محمد امین گفت:

    با عرض سلام و خسته نباشید . مشکل رفع شد خدا رو شکر
    مشکل از کد : (drawerLayout.closeDrawer(GravityCompat.Start
    بود که به جای start باید end رو مینوشتم تا منو از سمت راست بسته بشه
    با تشکر از پیگیری هاتون

  • زهره گفت:

    سلام
    وقتتون بخیر
    شما خیلی کامل و جامع و همراه با همه جزئیات ممکن این آموزش ها را آماده کردید و اینکه بعدش هم میتونیم اشکالاتمون را از شما بپرسیم خیلی مزیت خوبیه
    و قیمتاش هم واقعا منصفانه است. البته من هنوز ابتدای کارم و فقط دارم کلیات مطالب رو میخونم و بعدا انشاالله میرم سراغ خرید اونها
    از شما تشکر می کنم و امیدوارم در همه زمینه موفق و پیروز باشید.

  • امین گفت:

    با عرض سلام و خسته نباشید
    من پروژه رو کامل و تا انتها اجرا کردم و مشکل نداشتم. اما زمانی که تنظیم میکنم منو از سمت راست باز بشه دو مشکل بوجود میاد:
    ۱) منو آیتم ها کار نمی‌کنند و برنامه کرش میکند
    ۲) فشردن دکمه بازگشت هم سبب کرش برنامه میشود
    ممنون میشم راهنمایی کند چون انگلیسی هم سرچ زدم و چیزی دستگیری نشده
    ممنون

    • سیدمهدی مطهری گفت:

      این لینکها رو مطالعه کردید؟
      https://stackoverflow.com/q/18547277
      https://stackoverflow.com/q/30706552
      https://stackoverflow.com/q/40101725
      https://stackoverflow.com/q/48523828
      اگه حل شد لطفا اطلاع بدید

      • امین گفت:

        با عرض سلام و خسته نباشید .
        متوجه اشکال بنده گویا نشدید . من میتونم تنظیم کنم که از سمت راست باز بشه منو . اما زمانی که از سمت راست باز میشه و من یکی از گزینه ها رو انتخاب میکنم برای نمایش توست مسیج برنامه کرش می‌کنه ولی اگر از سمت چپ باز بشه و من یکی از گزینه ها رو انتخاب کنم دیگه کرش نمیکنه و درست کار می‌کنه.
        با این حال من این چهار سایت رو چک کردم و مغایرتی با کد های من نداشت
        با تشکر

        • سیدمهدی مطهری گفت:

          Logcat رو بررسی کنید ببینید موقع کرش چه قسمت از برنامه خطا داره.

          • سید محمد امین گفت:

            با عرض سلام و خسته نباشید . مشکل رفع شد خدا رو شکر
            مشکل از کد : (drawerLayout.closeDrawer(GravityCompat.Start
            بود که به جای<> باید <> رو مینوشتم تا منو از سمت راست بسته بشه
            با تشکر از پیگیری هاتون

          • سیدمهدی مطهری گفت:

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

  • Mohmd گفت:

    سلام،وقت بخیر
    من ی navigation drawer توسط پیش فرض اندروید استودیو ساختم و در mainContent موقع جایگذاری طراحی خودم در فرگمنت پیش فرض و هاید کردن navigation_bar یک لایه سفید پایین لیاوت خودم میاد مشکل از کجاست؟!

  • بردیا گفت:

    سلام.جسارتن چجوری جای بکراند رنگ ,عکس پولیگان گذاشتین؟

  • هانی گفت:

    سلام وقتتون بخیر .من تمام کارایی ک گفتین رو انجام دادم ولی داخل firstActivity هیچ کاری نمیکنه. رویداد کلیک روی باتن و کارد ویو انجام نمیشه هرکاری میکنم.حتی توست هم نمابش داده نمیشه لطفا جواب بدین چطوری درستش کنم؟؟؟؟؟؟؟من واقعا لازمش دارم
    خیلیا تو کامنت ها این مشکل داشتن ک قرار بود توضیحش بدید
    باتشکر

  • رامین عابدینی گفت:

    سلام و درود
    تشکر فراوان از آموزش روان و مفید جنابعالی
    خواستم خواهش کنم در خصوص شخصی سازی منو راهنمایی بفرمائید.
    داخل منو تغییر فونت ,اندازه قلم و … رو چطور انجام بدم.
    چه کدی لازم هست. ممنون از محبتتون.

  • مهدی گفت:

    سلام
    آموزش هاتون بسیار روان و قابل فهم هستن .
    ممنون بایت آموزش های خوبتون .

  • سحر گفت:

    سلام من این محصول رو خریدم و کامل هم انجامش دادم

    فقط مشکلی که دارم اینه که تو firstActivity یا همون صفحه اصلی و اول نه باتن هام عمل میکنن و نه هیچ کار دیگه ای نمیتونم بکنم . حتی توست هم تعریف میکنم نمیاره ………..تستش کردید استاد؟

  • نوید گفت:

    آقا چرا به سوال ما کسی جواب نمیده؟؟الان چند بار پرسیدم ولی کسی جواب نمیده میگم چرا تو اکتیویتی first activityv هیچی عمل نمیکنه؟؟؟؟؟؟؟

  • تشریفات گفت:

    بسیار عالی بود
    توی برنامه کمکم کرد

  • آزاد گفت:

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

    • سید مهدی مطهری (مدیر) گفت:

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

  • حسین یوسفی گفت:

    با سلام
    من ی پروژه دارم با چندتا اکتیویتی جدیدا هم ی اسلاید نویگیشن اضافه کردم به پروژه حالا وقتی میخام مثلا اکتیویتی اصلی برنامه رو داخل فایل تولبار include کنم برنامه کرش میکنه سوالم اینه آیا این کرش به خاطر اینه که فایل جاوای اکتیویتی اصلی رو نمیشناسه؟

  • من گفت:

    سلام.من پی دی اف رو خریدم و کدها رو عینا وارد کردم اما هنگام اجرای برنامه ،کرش میشه…میشه راهنمایی کنید؟ممنون

  • shahab گفت:

    سلام من می خواهم با کلیک روی قسمت های header
    به اکتیویتی دیگری بروم ولی ارور میدهد لطفا راهنمایی کنید.با تشکر.

  • امیر بختیاری گفت:

    ممنون از آموزش

    یه سوال داشتم
    چ جوری میتونم منوهایی ک دارم تو NavigationView نشون میدم از راست به چپ باشه

  • حامی گفت:

    سلام .
    راستش من ویدیو و یا pdf رو خریداری نکردم اما
    یه سوال داشتم خدمت شما
    من میام و یک Layout رو درست می کنم وقتی
    کد های منو کشویی رو میزارم داخل اون خود به خود میاد جلوی صفحه ای که من ساختم و نمی تونم دیگه صفحه ارو ببینم
    بدون شک یه مشکلی هست اما خیلی دنبالش گشتم
    می تونید یکنم راهنماییم کنید ؟

    • سید مهدی مطهری (مدیر) گفت:

      خب دلایل متعددی میتونه داشته باشه و من مورد خاصی به ذهنم نمیرسه که بگم اینو اوکی کنید حل میشه. باید جزء به جزء کد رو بررسی کنید ببینید ایراد کجاست

  • احمد گفت:

    سلام. چطوری میتونم چند تا دکمه بزارم تو صفحه اصلی که هر کدوم به یک اکتیویتی دیگر منتقل بشه؟ تو پروژ ساده با دارم ولی تو این نوع پروژه یاد ندارم.

  • shayan siamakany گفت:

    سلام خسته نباشید موقع اضافه کردن navigation view ازم عرض و ارتفاع میخواد ولی تو پی دی اف شما فقط تگشو داخل navigation drawer اضافه کردین و چیز دگ ای تعریف نکردین :/

  • احمد گفت:

    سلام. من در لینک دادن لیوت Header به اکتیویتی اصلی مشکل دارم. ارور داره. اینم عکس از ارور.
    [URL=http://imgurl.ir/][IMG]http://imgurl.ir/uploads/h770660_IMG_20180728_230628_813.jpg[/IMG][/URL]

  • پوریا گفت:

    سلام
    برای ترکیب navigation با لیست ویو به چه صورتی باید عمل بشه؟
    لیست ویو رو تو کدوم لایه باید تعریف کنیم؟
    ممنون میشم راهنمایی کنید.

    • سید مهدی مطهری (مدیر) گفت:

      اینکه بخواد تو چه لایه ای تعریف بشه قاعده ای نداره که من بخوام بگم. همونطور که تولبار include شده هر چیز دیگه ای رو هم میتونید اضافه کنید

  • پوریا گفت:

    بسیار عالی آموزش میدین
    آموزش هاتون حتی از سایت های زبان اصلی و رسمی هم بهتره.
    یه سوال هم دارم
    بااینکه از پروکسی معرفی شده تو سایتتون استفاده کردم ولی همچنان مشکل بیلد شدن گریدل وقتی که میخام Library به پروژه اضافه کنم رو دارم
    پیشنهادشما چیه؟
    باید گریدل یا اندروید استودیو آپدیت بشه یا …؟

  • ابوالفضل زرقی گفت:

    سلام خسته نباشید مهندس
    منو کشویی من کاملا سفیده و هدر و بقیه آیتمها هم نمایش داده نمی شن….دلیلش چیه ..
    من از جنیموشن و اندروید ۸ استفاده میکنم

  • ابوالفضل گفت:

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

  • SHM گفت:

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

  • mohsen گفت:

    با عرض خسته نباشید اگه بخواهیم کاربر با لمس هر کدوم از گزینه های منو کشویی به یه اکتیویتی منتقل بشه باید از intent استفاده بشه؟

  • farshad گفت:

    چطور از راست به چپش کنیم/.

  • moeedrb گفت:

    سلام
    تگ android.support.v4.widget.DrawerLayout رو حتما باید تو activity main اضافه بشه؟
    من نیاز به linear layout تو activity main دارم که نمیشه اضافه کرد.
    دو تا لایوت رو هم که include می کنم روی هم می افتن.
    راه حلی هست برای این موضوع؟

  • moeedrb گفت:

    سلام من از پروژه ایی که سورس هاش رو کنار آموزش گذاشتین ران گرفتم این ارورر رو میده:E/AndroidRuntime: FATAL EXCEPTION: main
    Process: ir.android_studio.navigationdrawer, PID: 1621
    java.lang.RuntimeException: Unable to start activity ComponentInfo{ir.android_studio.navigationdrawer/ir.android_studio.navigationdrawer.MainActivity}: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class android.support.design.widget.NavigationView

  • واراند گفت:

    سلام خسته نباشید من این محصول خریدم درست کار می کنه ولی هر کدی توی firstactivity می نویسم اجرا نمی شه ممنون می شم راهنایی کنید؟
    واقعا گیرم

  • Reyhoon گفت:

    سلام..
    منم مشکل firstActivity دارم که هیچی (باتن و…) توش کار نمی کنه..
    ممنون میشم راهنماییم کنید.

  • majid گفت:

    سلام من این محصول رو خریدم و کامل هم انجامش دادم

    فقط مشکلی که دارم اینه که تو firstActivity یا همون صفحه اصلی و اول نه باتن هام عمل میکنن و نه هیچ کار دیگه ای نمیتونم بکنم . حتی توست هم تعریف میکنم نمیاره .

  • نظری گفت:

    سلام
    چه جوری میشه منو ها رو به صفحاتی که ساختیم لینک بدیم؟راهنمایی میکنید

  • حسینعلی هوشمند گفت:

    سلام
    خیلی ممنون بابت اموزش هاتون

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

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

    • سید مهدی مطهری (مدیر) گفت:

      در توضیحات ابتدایی مبحث متریال ذکر شده چه نسخه هایی از اندروید، متریال رو به صورت پیش فرض پشتیبانی نمیکنن. اگر جزء اون دسته هستش این گوشی، در استایل دهی قسمت مربوط به پس زمینه رو چک بکنید. احتمالا خود اندروید استودیو پیغام مربوطه رو بهتون نمایش میده که یکی از آیتم ها رو باید تغییر بدید

  • Mohamad گفت:

    سلام با سپاس و خسته نباشید.
    android:windowDrawsSystemBarBackgrounds
    حداقل به API بیست ویک احتیاج دارد.

  • ohh_mid گفت:

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

    ممنون