___ tag123android ___ Android ist das mobile Betriebssystem von Google, das zum Programmieren oder Entwickeln von digitalen Geräten (Smartphones, Tablets, Automobile, Fernseher, Wear, Glass, IoT) verwendet wird. Verwenden Sie für Themen rund um Android Android-spezifische Tags wie android-intent, nicht intent, android-activity, nicht activity, android-adapter, nicht adapter usw. Bei anderen Fragen als der Entwicklung oder Programmierung, aber im Zusammenhang mit Android Framework, verwenden Sie Der Link: https://android.stackexchange.com.
___ tag123draganddrop ___ Drag-and-drop ist in Computer-Benutzeroberflächen die Aktion (oder Unterstützung für die Aktion), ein virtuelles Objekt durch "Greifen" und Ziehen an einen anderen Ort oder auf ein anderes virtuelles Objekt auszuwählen.
___ tag123androidpopupwindow ___ Das PopupWindow ist ein AndroidView-Container, der über der aktuellen Acticity angezeigt wird, um eine Ansicht anzuzeigen.
___ qstnhdr ___ PopupWindow reagiert nicht auf Drag & Drop-Ereignisse
___ antwort43841291 ___
PopupWindow
wird das View
auf% hinzufügen co_de% instance und nicht zum aktuellen Layout. Während in den Dokumenten angegeben ist:
Das System sendet ein Drag-Ereignis mit dem Aktionstyp ACTION_DRAG_STARTED an die Drag-Ereignis-Listener für alle View-Objekte im aktuellen Layout .
Achten Sie auf fett gedruckte " im aktuellen Layout ". Die Inhaltsansicht von WindowManager
wird nicht als im aktuellen Layout betrachtet angesehen. Aus diesem Grund werden diese Ereignisse nicht an die Inhaltsansicht von PopupWindow
gesendet.
Als Workaround können Sie ein PopupWindow
mit denselben Koordinaten zum aktuellen Layout hinzufügen, das als Geist von View
fungiert, und auf Drag-Events für dieses PopupWindow
lauschen.
Implementierung
Fügen Sie dem Layout die Geisteransicht hinzu:
%Vor%
Richten Sie die Geisteransicht von View
:
ein
%Vor%
Wir möchten, dass nicht Geisteransicht sichtbar ist. Deshalb setzen wir sie auf null.
Dann haben wir die onCreate()
mit Ankeransicht eingerichtet:
%Vor%
Wir müssen PopupWindow
ausführen, sonst wird setTouchable(false)
Berührungsereignisse verbrauchen. Außerdem legen wir die Position der Geisteransicht genau an der Position fest, an der PopupWindow
angezeigt wird.
Dann zeigen wir PopupWindow
bei geeigneten Drag-Events an und weisen sie ab:
%Vor%
Ergebnis
Eine Pull-Anforderung wird in Ihrem Repository mit den oben genannten Funktionen geöffnet.
Ich habe in meiner Anwendung ein Menüsymbol. Wenn ich etwas drag and drop trage, erscheint ein Popup. Ich muss meinen Drag and Drop auf dieses PopupWindow
erweitern.
Ich mache das wie folgt.
Erstellt ein PopupWindow wie gezeigt
%Vor%
Setzen Sie den dragListener wie gezeigt
%Vor%
Das folgende Video zeigt, was ich erreichen möchte.
Aber die PopupView reagiert nicht auf Drag-Events. Ich habe auch versucht% ce_de% zu benutzen, aber es hat auch nicht geholfen.
Jede Hilfe wird geschätzt.
Vielen Dank im Voraus.