Ich habe eine ListActivity und ich möchte für jedes der Listenelemente Kontextmenü zu implementieren. Ich weiß, dass die gängige Methode ist, das Kontextmenü bei langem Klick/Tippen anzuzeigen. Ich möchte wissen, ob es eine Möglichkeit gibt, das Kontextmenü für jedes Element bei einem Tastendruck anzuzeigen (vorzugsweise die Menütaste). Um meine Frage neu zu formulieren, wie kann ich das Kontextmenü und nicht das Optionsmenü durch Drücken der Menütaste (oder einer anderen Taste) auslösen.So implementieren Sie das Kontextmenü auf Tastendruck anstelle von langem Klick/Tippen
Antwort
Um das Kontextmenü zu öffnen, rufen Sie openContextMenu()
. Um es über einen Schlüssel auszulösen, überschreiben Sie onKeyDown()
oder onKeyUp()
.
Das sagte, ich wirklich nicht empfehlen.
Benutzer beschweren sich, dass Android keine UI-Standards hat. Stattdessen verfügt Android über UI-Konventionen, die Entwicklern eine gewisse Freiheit bieten (und, was noch wichtiger ist, sind keine Hindernisse, um Ihre App im Android Market zu platzieren).
Allerdings ist der Punkt dieser Benutzer sehr gültig - ihre Erfahrung ist beeinträchtigt, wenn Apps sich entscheiden, auf einer UI-Tangente zu gehen. Die Entscheidung, die MENÜ-Taste zum Öffnen eines Kontextmenüs zu verwenden, wäre eine solche Tangente. Für den Anfang, auf Touch-Screen-Geräten, wird dies nicht sehr gut funktionieren, weil es in Ihrem ListView
kein ausgewähltes Element gibt, so dass es für den Benutzer unklar wäre, was das MENU betrifft.
Ich vermute, dass es eine bessere Lösung für welches Problem Sie denken, dass Sie auf diese Weise lösen.
Ich habe das gleiche für eine meiner Apps getan, weil es für meine App sinnvoll war. Der beste und einfachste Weg dies zu tun ist, onListItemClick() für Ihre listActivity zu überschreiben. Dies ist besser als onKeyDown(), da es sich speziell auf das fragliche Listenelement (Ansicht) bezieht und nur für die Listenelemente und nicht für den Rest des Bildschirms gilt.
onListItemClick(ListView l, View v, int position, long id)
{
v.showContextMenu();
}
dann alles, was Sie tun müssen, um das Kontextmenü Methoden außer Kraft setzen und Sie sind golden
- 1. So implementieren Sie das Kontextmenü für NSCollectionView
- 2. Wie implementieren Sie das Kontextmenü in einer ListActivity auf Android?
- 3. So deaktivieren Sie das Kontextmenü in JavaScript
- 4. So implementieren Sie einen Farbwähler anstelle von statischen Farben
- 5. So implementieren Sie das Ereignis
- 6. Angular2 rc4 ngModelChange onchange anstelle von Tastendruck
- 7. So implementieren Sie über das Scrollen
- 8. So implementieren Sie das Android CallLog TableLayout
- 9. So implementieren Sie die Datenbankzugriffssteuerung auf Zeilenbasis
- 10. So entfernen Sie das Kontextmenü in VLC Media Player?
- 11. So aktivieren Sie das Kontextmenü des Webbrowsers über die Combobox
- 12. PyQT4: So erhalten Sie das Kontextmenü für qListView
- 13. So fangen Sie einen Tastendruck auf einem C# .NET-Formular
- 14. So implementieren Sie Templating auf UWP/UAP
- 15. ContextMenu erscheint nicht bei langem Klick
- 16. Angular 2: Implementieren eines benutzerdefinierten Kontextmenü
- 17. So implementieren Sie das Laden von Spinner in Xcode
- 18. So implementieren Sie IAsyncOperationWithProgress
- 19. So implementieren Sie Suche auf mp3
- 20. So deaktivieren Sie ToolStripMenuItem im Kontextmenü Dynamisch?
- 21. So verwenden Sie SensorManager.getOrientation() anstelle von TYPE_ORIENTATION
- 22. So implementieren Sie Zeit auf Android
- 23. So erhalten Sie Knotenattribute im Kontextmenü jstree
- 24. So implementieren Sie Excel ACCRINT
- 25. jquery - "Klick" auf Tastendruck?
- 26. Android Fragmente: öffnen Sie das Kontextmenü programmatisch
- 27. So implementieren Sie die automatische Speicherung
- 28. So implementieren Sie SAML SSO
- 29. So implementieren Sie HTTP-Tunneling
- 30. So verwenden Sie anstelle von IsNull
Ich bin damit einverstanden, dass es einige regelmäßige Konventionen sein muss für die Entwickler der Verbraucher Android-Erfahrung konsequenter von einem machen zu folgen App zu einem anderen. Für diese spezifische Frage glaube ich jedoch, dass es Situationen gibt, in denen es angemessen ist und ich dies selbst getan habe. – mtmurdock
@ mtmurdock: Sie sind herzlich willkommen zu Ihrer Meinung. Das Android-Kernteam scheint es nicht zu teilen: http://developer.android.com/guide/practices/ui_guidelines/menu_design.html – CommonsWare