تشخیص کلیک طولانی در آیتم های منوی options در برنامه نویسی اندروید

تشخیص کلیک طولانی در آیتم های منوی options در برنامه نویسی اندرویدReviewed by آریانا on Jan 24Rating: 5.0تشخیص کلیک طولانی در آیتم های منوی options در برنامه نویسی اندرویدهندل کردن کلیک با استفاده از متد onOptionItemSelected(MenuItem item) بسیار آسان است. اما تشخیص یک کلیک طولانی (long click) کار چندان ساده ای نیست

در آندروید، منوی گزینه های (options) شما باید شامل اقدامات و سایر گزینه های دیگر که مربوط به زمینه فعالیت های فعلی هستند، مانند “جستجو”، “نوشتن ایمیل” و “تنظیمات” باشد. منوی گزینه همیشه (از API 11 به بعد) در Action Bar/Toolbar قرار گرفته است.

با آیتم های options menu که همیشه در Action Bar/Toolbar نشان داده می شوند، هندل کردن کلیک با استفاده از متد onOptionItemSelected(MenuItem item) بسیار آسان است. اما تشخیص یک کلیک طولانی (long click) کار چندان ساده ای نیست. ما باید یک ویوی سفارشی برای این آیتم منو و هندل کردن کلیک طولانی تنظیم کنیم. ما در این پست می خواهیم یک راه حل برای رفع این مشکل ارائه دهیم.

کلیک طولانی پیش فرض برای آیتم های منوی option

فرض کنید ما یک فایل منوی ساده با فقط یک آیتم داریم . مثل:

menu_main.xml

 

با آیتم منویی که یک آیکون دارد وقتی در حال اجرا کردن هستیم، ای نآیکون به جای آییتم کوچک نمایش داده می شود و اگر شما کلیک طولانی روی این آیتم داشته باشید،  آیتم کوچک توسط یک Toast نمایش داده می شود (مثل ImageView’s contentDescription):

actionView آیتم های سفارشی منوی option

اگر شما بخواهید که کلیک طولانی روی آیتم منو را سفارشی ایجاد کنید، اولین کار ایجاد یک layout جدید است:

res\layout\layout_menu.xml

 

و حالا باید این لایه را به عنوان MenuItem action view تنظیم کنیم. دکمه را توسط call findViewId() بگیرید  کلیک طولانی آن را توسط متد () use setOnLongClickListener هندل کنید. این کارها را در onCreateOptionsMenu() انجام دهید:

 

و این خروجی کار ماست وقتی روی آیکون دوربین در منوی option کلیک طولانی می کنید:

یک نکته مهم اینجا وجود دارد: با این سفارشی سازی شما نمی توانید “normal click” را  با باطل کردن onOptionsItemSelected(MenuItem item) هندل کنید. پس اگر میخواهید این کار را انجام دهید، لطفا setOnClickListener() را برای دکمه در کنار onCreateOptionsMenu(Menu menu) قرار دهید:

 

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

 

 

 

پاسخ دهید