استفاده از toolbar در اپلیکیشن اندروید

استفاده از toolbar در اپلیکیشن اندرویدReviewed by مهرخ on Nov 13Rating: 5.0استفاده از toolbar در اپلیکیشن اندرویدToolbar که سابقا با نام action bar میشناختیمش به عنوان اندروید 5.0 در قسمت toolbar view group نمایش داده میشود. که میتوانید آن را به سادگی به فایل layout منتقل کنید. Toolbar می تواند عنوان ، آیکون و حرکت های activity را نشان دهد و همچنین میتواند additional view و آیتم های interactive را اجرا کند. و در آخر میتواند در مسیر یابی اپلیکیشن به شما کمک کند.

استفاده از toolbar در اپلیکیشن اندروید

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

Toolbar که سابقا با نام action bar میشناختیمش به عنوان اندروید  ۵٫۰ در قسمت toolbar view group  نمایش داده میشود. که میتوانید آن را به سادگی به فایل layout منتقل کنید. Toolbar می تواند عنوان ، آیکون و حرکت های activity  را نشان دهد و همچنین میتواند additional view  و آیتم های interactive  را اجرا کند. و در آخر میتواند در مسیر یابی اپلیکیشن به شما کمک کند.

قبل از امدن اندروید ۵٫۰ ،toolbar در قسمت بالایی activity قرار گرفته بود. میتوانید با استفاده از تمی که فعال کرده اید toolbar را غیر فعال کنید اما در تم پیش فرض خود به خود فعال است.

در اسکرین شات زیر toolbar  برای  Google+ Android application با interactive item و navigation bar نمایش داده شده است. در قسمت بالایی نشان داده شده است که کاربر میتواند از قسمت کناری اپلیکیشن navigation bar را باز کند.

interactive item

تولبار اولین بار در اندروید  ۵٫۰ (API 21) معرفی شد. اگر می خواهید از آن در اندروید های پایین تر استفاده کنید میتوانید از  downport که توسط شرکت appcompat-v7 support library تهیه شده است استفاده کنید. برای استفاده از toolbar در چنین اندروید هایی یک compile dependency به com.android.support:appcompat در فایل gradle build  اضافه کنید.

اپلیکیشن ها با ورژن  target SDK  پایین تر از  API 11 از option menue استفاده می کنند، البته اگر چنین گزینه ای روی دستگاه باشد. اگر کاربر دکمه ی option را فشار دهد option menu نمایش داده میشود. در زمانیکه action bar کاملا مشخص است toolbar نسبت به option menu اهمیت بیشتری دارد در حالیکه option menu فقط زمانی نشان داده می شود که کاربر در خواست کند. ممکن است در بعضی مواقع کاربر متوجه نشود که اپلیکیشن چه آپشن هایی دارد.

معمولا ورودی های toolbar ، اکشن نامیده می شوند. وقتی میتوانیم ورودی ها را در action bar با استفاده از کد بسازیم ، معمولا toolbar با نام XML resource file تعریف می کنیم. تعریف هر کدام از منوها در فایلی جداگانه در فولدر  res/menu قرار دارند.  Android tooling به صورت اتوماتیک یک مرجع برای منوی آیتم های ورودی در فایل R می سازد اینطوری میتوانیم به منوی  resource دسترسی پیدا کنیم.

Activity ورودی ها را به متد onCreateOptionsMenu() ،action bar اضافه می کند.

ویژگی showAsAction به شما اجازه میدهدکه چگونگی نمایش action  را مشخص کنیم. برای مثال، ویژگی ifRoom مشخص می کند که در صورت بودن فضای کافی action تنها در action bar نمایش داده شود.

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

اگز یک اکشن را انتخاب کنید متد onOptionsItemSelected() متناسب باactivity فعال می شود. و از اکشن انتخاب شده به عنوان یک پارامتر استفاده می کند. نحوه ی استفاده ی این متد در کد زیر نمایش داده شده است:

میتوانید ا ز متد findItem() در کلاس menu برای جستجوی منوهای آیتم استفاده کنید. این متد به شما اجازه میدهد که براساس  id جستچو کنید.

تنها یک بار از onCreateOptionsMenu() استفاده می کنیم. اگر بعدا میخواهید منو را تغییر دهید باید از متد invalidateOptionsMenu()  استفاده کنید. بعد دوباره از متد onCreateOptionsMenu() استفاده کنید.

contextual action mode

این اکشن مد یک toolbar موقت را فعال می کند که باعث می شود toolaber اپلیکیشن برای یک مدتی با یک sub-task جایگزین شود.

contextual action mode یا با انتخاب یک آیتم ویا با چند ثانیه کلیک کردن فعال می شود.

برای اجرا کردنش  از متد startActionMode() برروی viewer اکتیویتی استفاده کنید. این متد ActionMode.Callback را به دست می آورد که این object مسئول چرخه ی کاری  contextual action bar است.

شما میتوانید با استفاده از متد registerForContextMenu(view) ،context menu را به view منتقل کنید. Context menu با چند ثانیه کلیک کردن برروی view هم میتواند فعال شود. هر زمان که context menu فعال می شود متد  The onCreateContextMenu() مورد استفاده قرار میگیرد بعد از اینکه از context menu استفاده شد غیر فعال می شود. به خاطر همین باید به جای استفاده از context menu  باید از contextual action mode استفاده کنید.

فرگمنت ها هم میتوانند ورودی های toolbar را تنظیم کنند.

برای انجام این کار از قسمت فرگمنت و ازمتد onCreate()،setHasOptionsMenu(true) را استفاده کنید. وقتی متد onCreateOptionsMenu() در کلاس فرگمنت باشد اندروید framework شروع به کار می کند. در این موقع میتوانید آیتم های منو را با فرگمنت به toolbar اضافه کنید.

در زمان اجرا میتوانید visibility تولبار را تغییر دهید. کد زیر همین مطلب را نشان می دهد:

همچنین میتوانید متنی که در زمان اجرا در کنار آیکون های اپلیکیشن نمایش داده میشوند را تغییر دهید:

میتوانید گزینه ی Drawable را  از طریق متد ActionBar.setBackgroundDrawable()به پس زمینه ی action bar اضافه کنید.

Toolbarاندازه ی عکس را مضخص می کند. بنابراین بهتر است که یک scalable drawable فراهم کنید مانند  a 9-patch  و یا XML drawable.

Action bar می تواند به عنوان پس زمینه ی اندروید ۴٫۲ از طریق AnimationDrawable نمایش داده شود.

برای اینکه فضای بیشتری داشته باشید میتوانیددکمه ی   software navigation را کم نور تر کنید. اگر کاربر روی صفحه بزند دوباره دکمه ی  software navigation  روشن می شود.

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

عکس های  زیر صفحه نمایش را دربا دکمه ی navigation و بدون آن نمایش میدهند:

navigation button

2navigation button

اگر اندروید شما  ۴٫۴ (API 19)  باشد می توانید اپلیکیشن را در حالت full screen (تمام صفحه) نمایش دهید. اولین باری که صفحه به صورت کامل نمایش داده شود سیستم اطلاعاتی را در اختیار کاربر قرار میدهد که کاربر با استفاده از آن اطلاعات می تواند  system bars ها را دوباره به دست اورد.

برای مثال متد زیر نحوه ی قرار گرفتن activity به حالت  full screen را نمایش می دهد:

میتوانید تعیین کنید که در صورت نبود فضا سیستم به صورت اتوماتیک اندازه ی صفحه را کم کند.

می توانید این قابلیت را از قسمت پارامتر های uiOptions=”SplitActionBarWhenNarrow” و فایل  AndroidManifest.xml فعال کنید.

 

پاسخ دهید