Ich frage mich, ob es möglich ist, die Bildschirmkoordinatenposition einer Aktion Balkenmenüeintrag zu erhalten? Wie ich einen Einführungsbildschirm erstellen möchte, um einen Pfeil zu zeichnen, der auf den gewünschten Aktionsleisten-Menüeintrag zeigt, so dass der Benutzer weiß, wo er anfangen soll.Ermitteln der Bildschirmkoordinaten des Aktionsleistenmenüeintrags zum Erstellen des Einführungsbildschirms
Antwort
Sie können sehen, wie diese Funktion in ShowcaseView Bibliothek implementiert wird.
Gegenwärtig gibt es keine dokumentierten und unterstützten Mittel, außer für Ihre eigenen benutzerdefinierten Aktionslayouts oder Aktionsansichten. Es gibt keine API, um gewöhnliche Inhalte der Aktionsleiste abzurufen (Home Affordance, Titel, normale Artikel).
ShowcaseView, wie in der anderen Antwort erwähnt, macht wahrscheinlich einige undokumentierte/nicht unterstützte Dinge für diese, wie zum Beispiel durch die View
Hierarchie, um an diese Widgets zu bekommen. Das ist insofern riskant, als zukünftige Versionen von Android oder Hersteller-/ROM-Modder-Änderungen an Android diese Logik durchbrechen könnten.
Gibt es noch immer keine Möglichkeit, die Koordinaten von Aktionsleistenmenüpunkten herauszufinden? – penduDev
@penduDev: Nichts dokumentiert und unterstützt, zuletzt habe ich überprüft. – CommonsWare
Ich habe eine Antwort hinzugefügt ... funktioniert für mich – penduDev
Hier ist, wie ich es tat:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId().equals(R.id.my_menu_item)) {
View menuView = findViewById(R.id.menu_item_search);
int[] location = new int[2];
view.getLocationOnScreen(location);
int locationX = location[0];
int locationY = location[1];
}
}
Dies beruht auf dem Widget mit einer bestimmten ID. Dies kann in Fällen der Fall sein, in denen Sie den Inhalt Ihrer benutzerdefinierten Aktionsleiste erstellen. Dies gilt nicht für alle Situationen, insbesondere wenn Sie Dinge aus dem Android-SDK verwenden, z. B. 'SearchView' oder' ShareActionProvider', wobei Widget-IDs, soweit vorhanden, interne Implementierungsdetails sind und Änderungen unterliegen können. – CommonsWare
Dies hängt auch davon ab, dass der Benutzer auf eine Schaltfläche in der Aktionsleiste klickt, was bei dem, was die Person hier fragt, nicht funktioniert. – Rob
- 1. Ermitteln des Adressbereichs des Datensegments
- 2. Verwenden von PropertyInfo zum Ermitteln des Eigenschaftstyps
- 3. Erstellen von Farbbrüher und Ermitteln des Durchschnittswerts
- 4. Ermitteln des Computernamens des Kunden
- 5. Ermitteln des verfügbaren Videospeichers
- 6. Ermitteln des Fensters/der Bildschirmgröße der Anwendung
- 7. 8086 Assembly: Ermitteln der Ausführungszeit des Codes?
- 8. Javascript zum Ermitteln der Systemlautstärke (Ton) und des Audiosteckers
- 9. Ermitteln des Typs des Klassentypparameters Typescipt
- 10. Ermitteln des Anwendungsneufokusereignisses
- 11. Ermitteln der Zeitzone des Clients mit C#
- 12. Ermitteln des "System Load"
- 13. NodeJS: Ermitteln des aktuellen Arbeitsverzeichnisses des Benutzers
- 14. Ermitteln des Ergebnistyps in OnException des Controllers
- 15. Ermitteln des Dateityps mithilfe des Dialogfelds "Elektron"
- 16. Größe der Größe des Matplotlib-Plotfensters ermitteln
- 17. Ermitteln des Erweiterungstyps mithilfe des Image-Streams
- 18. Ermitteln der Uhrzeit und des Datums des Benutzers in PHP
- 19. Ermitteln der Ebene des gesuchten Elements
- 20. Ermitteln des angehaltenen Zustands des Quarzauslösers?
- 21. Ermitteln der Gesamtgröße des SVN-Verzeichnisses/Trunks
- 22. Ermitteln des Namens der Elternklasse mit Reflection
- 23. Ermitteln der eindeutigen ID des Geräts
- 24. Ermitteln der Shell des aktuellen Benutzers
- 25. Ermitteln der SQL Server-Version des Verbindungsservers
- 26. Größe des Ordners oder der Datei ermitteln
- 27. Ermitteln des Benutzers beim Verlassen der Seite
- 28. Ermitteln des gedrehten Rechtecks aus der Kontur
- 29. Ermitteln der Quellanwendung des aktuellen Passepartout-Inhalts
- 30. Ermitteln des Dateinamens der laufenden Batch-Datei
genial und sehr native Bibliothek! –
Das ist sehr schlechte Antwort, Sie zeigen nicht einmal einen bestimmten Ort in der Bibliothek. – Hurda
Sie verwenden Reflektion, um zu den privaten Feldern zu gelangen. Das ist nicht gut. Ich werde es nicht benutzen. –