Android open ContextMenu на коротком клике + элемент с кликом
lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { TextView text = (TextView) view.findViewById(R.id.btitle); registerForContextMenu(text); view.showContextMenu(); } }); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); TextView text = (TextView) v.findViewById(R.id.btitle); CharSequence itemTitle = text.getText(); menu.setHeaderTitle(itemTitle); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.context_menu, menu); }
Здравствуйте,
Я пытаюсь открыть contextMenu при нажатии на короткий элемент. Мне удалось это сделать, только если я добавлю registerForContextMenu(getListView());
где-то, но это также запускает contextMenu на длинный клик (чего я не хочу делать).
- Пробовал
view.showContextMenu()
но он ничего не делает, если я не добавлюregisterForContextMenu(getListView());
, - Сначала пробовал зарегистрировать щелкнутый элемент, а затем вызвать
showContextMenu()
но ничего не сделал …
Кроме того, я хочу получить текст изображения с нажатой кнопкой мыши, чтобы я мог использовать их в контекстеMenu.
- Как проверить, зарегистрирован ли пользователь в FB SDK 4.0 для Android?
- Как избежать отказа в разрешении EACCES на SDCARD с версией KITKAT 4.4.2. Новая политика из Google
- Невозможно загрузить библиотеку: reloc_library : не удается найти «rand»
- android получить все контакты
- Добавьте «Просмотреть больше» в конце текстового просмотра после трех строк
Цените помощь!
- java.lang.NoClassDefFoundError: javax.activation.DataHandler в android
- Android 2.2 MediaPlayer отлично работает с одним URL-адресом SHOUTcast, но не с другим
- camera.setParameters не удалось в android
- Bluetooth-соединение без подтверждения пользователя
- Показать и скрыть вид с помощью анимации слайдов вверх / вниз
- Снимок экрана Android с экрана Surface View показывает черный экран
- Как получить токен доступа после входа пользователя из Gmail в Android?
- Как правильно начать работу с PostExecute в Android?
Мне удалось открыть контекстное меню при нажатии кнопки со следующим кодом:
public void onButtonClickEvent(View sender) { registerForContextMenu(sender); openContextMenu(sender); unregisterForContextMenu(sender); }
Просто установите свойство onClick для кнопки onButtonClickEvent. Длинный клик не вызывает контекстное меню, так как он отменяется без прав сразу после его отображения.
Что касается открытия контекстного меню по короткому клику:
Другие решения, размещенные здесь, не работали для меня, потому что я использовал ListFragment. Однако следующее решение, похоже, отлично работает как для ListFragment, так и для ListActivity (или просто для любого старого списка в целом):
public void onListItemClick(ListView l, View v, int position, long id){ l.showContextMenuForChild(v); }
Это намного проще и элегантно. Фактически, это фактически то, как сам class ListView инициирует контекстное меню по длинному клику.
Решение:
@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); AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; long itemID = info.position; menu.setHeaderTitle("lior" + itemID); }
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
дает вам более подробную информацию об элементе списка. Затем вы можете использовать info.id, info.position
и т. Д., Чтобы получить детали и использовать их действия (редактировать, удалять …).
В моем случае у меня был BaseAdapter и реализован щелчок по кнопке для каждого элемента listView (в методе getView):
ImageButton menuBtn = (ImageButton) convertView.findViewById(R.id.itemListMenu); menuBtn.setOnClickListener(new android.view.View.OnClickListener() { public void onClick(View v) { parent.showContextMenuForChild(v); } });
Я считаю, что если вы добавите OnLongClickListener в представление, вы должны быть в состоянии предотвратить отображение контекстного меню при длительном нажатии.
В onItemClick параметр view
является представлением элемента, поэтому вы можете получить ImageViews или TextViews из этого:
view.findById(R.id.my_image_view);
Мое решение:
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { mListView.showContextMenuForChild(view); } });