Shakl 3. Suzuvchi kontekst menyusi (chapda) va kontekstli harakatlar paneli (o'ngda) skrinshotlari.
Kontekstli menyu foydalanuvchi interfeysida ma'lum bir element yoki kontekst doirasiga ta'sir ko'rsatadigan amallarni taklif qiladi. Siz har qanday ko'rinishi uchun bir kontekst menyusi bilan ta'minlash mumkin, lekin ular ko'pincha bir ob'ektlar uchun ishlatiladi ListView, GridViewfoydalanuvchi har bir element ustiga to'g'ridan-to'g'ri harakatlarni amalga oshirish mumkin bo'lgan, yoki boshqa view to'plamlari.
Kontekstli harakatlarni taqdim etishning ikkita usuli mavjud:
A suzuvchi kontekst menyusida . Foydalanuvchi kontekst menyusini qo'llab-quvvatlashini e'lon qilgan ko'rinishda uzoq sichqoncha tugmachasini bosganda (bosib ushlab turing) menyu menyusi suzuvchi ro'yxati (dialog oynasiga o'xshash) sifatida paydo bo'ladi. Foydalanuvchilar bir vaqtning o'zida bitta element bo'yicha kontekstli harakatni amalga oshirishi mumkin.
In kontekstual harakat rejimida . Ushbu rejim ekranning yuqori qismida kontekstli harakatlar satrini tanlangan element (lar) ga ta'sir ko'rsatadigan harakatlar elementlari bilan ActionModeko'rsatadigan tizimni amalga oshirishdir . Ushbu rejim faol bo'lganda, foydalanuvchilar bir vaqtning o'zida bir nechta narsalar bo'yicha harakatlarni amalga oshirishi mumkin (agar sizning ilovangiz bunga yo'l qo'ysa).
Suzuvchi kontekst menyusini yaratish
Suzuvchi kontekst menyusini taqdim etish uchun:
Ro'yxatdan Viewchaqirilib kontekst menyu bog'liq bo'lishi kerak bo'lgan registerForContextMenu()va uni o'tishi View.
Sizning faoliyati foydalanadi bo'lsa ListViewyoki GridViewva har bir element, shu kontekst menyusi ta'minlash o'tib bilan kontekst menyusi uchun barcha ma'lumotlar ro'yxatdan istagan ListViewyoki GridViewuchun registerForContextMenu().
Amalga oshirish onCreateContextMenu()siz ham usuli Activityyoki Fragment.
Ro'yxatdan o'tgan ko'rinish uzoq-sekin urish hodisasini qabul qilganda, tizim sizning onCreateContextMenu() usulingizni chaqiradi . Bu erda menyu elementlarini aniqlaysiz, odatda menyu resursini shishirasiz. Masalan:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.context_menu, menu);
}
MenuInflaterkontekst menyusini menyu resursidan shishirishga imkon beradi . Qayta qo'ng'iroq qilish usuli parametrlariga View foydalanuvchi tanlagan narsa va ContextMenu.ContextMenuInfotanlangan element haqida qo'shimcha ma'lumot beradigan ob'ekt kiradi. Agar sizning harakatlaringiz har xil kontekst menyusini taqdim etadigan bir nechta ko'rinishga ega bo'lsa, siz ushbu parametrlardan qaysi kontekst menyusini ochish kerakligini aniqlashingiz mumkin.
Amalga oshirish onContextItemSelected().
Foydalanuvchi menyu punktini tanlaganda, tizim ushbu usulni chaqiradi, shunda siz tegishli amalni bajarishingiz mumkin. Masalan:
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.edit:
editNote(info.id);
return true;
case R.id.delete:
deleteNote(info.id);
return true;
default:
return super.onContextItemSelected(item);
}
}
getItemId()Usul yordamida XML har bir menyu bandi yuklansin kerak tanlagan menyu uchun ID surishtiruv android:idhaqida bo'limda ko'rsatilganidek, bir xususiyati XML bir Menyu aniqlash .
Agar menyu elementini muvaffaqiyatli ishlasangiz, qaytib keling true. Agar menyu bandiga ishlov bermasangiz, menyu bandini superklass dasturiga o'tkazishingiz kerak. Agar sizning harakatingizda parchalar bo'lsa, harakat avval ushbu qo'ng'iroqni oladi. Qadar Işlenmeyen Superclass qo'ng'iroq qilib, tizim (har bir qism qo'shildi tartibda) bir vaqtning o'zida har bir bo'lak, birida tegishli qayta qo'ng'iroq qilish usuli voqea o'tib trueyoki falseqaytarilur. (Uchun standart dastur Activityva android.app.Fragmentqaytish false, shuning uchun siz har doim superklassga qo'ng'iroq qilishingiz kerak.)