EditText: Deaktivieren Sie das Einfügen / Ersetzen-Menü-Popup im Textauswahl-Handler. Click event

Mein Ziel ist es, ein @ zu habEditText das hat keine ausgefallenen Funktionen, nur den Textauswahl-Handler zum leichteren Bewegen des Cursors - also keine Kontextmenüs oder Popups.

Ich habe das Erscheinungsbild der Aktionsleiste für die Textbearbeitung (Kopieren / Einfügen usw.) deaktiviert, indem ich das ActionMode-Callback-Ereignis gemäß @ verwendet habdiese Lösun.

Der mittlere mittlere Textauswahlpunkt (siehe Abbildung unten) wird weiterhin angezeigt, wenn Text im Feld vorhanden ist und ein Klick innerhalb des Texts erfolgt. Groß! Ich möchte dieses Verhalten beibehalten. Was ich NICHT möchte, ist, dass das Menü "EINFÜGEN" angezeigt wird, wenn auf das Textauswahl-Handle selbst geklickt wird.

Ich habe auch die Langklick-Eingabe für den EditText deaktiviert, indem ich @ gesetzt habandroid:longClickable="false" im XML-Format. Durch Deaktivieren des langen Klicks wird verhindert, dass das Menü "Einfügen / Ersetzen" angezeigt wird, wenn die Maus gedrückt und gehalten wird (dh lange Berührung). Wenn die Maus jedoch innerhalb des Texts geklickt wird (einmalige Berührung), wird der Textauswahlgriff angezeigt Wenn Sie auf den Textauswahlpunkt selbst klicken, wird die Menüoption "Einfügen" angezeigt (wenn sich Text in der Zwischenablage befindet). Das versuche ich zu verhindern.

Von dem, was ich aus der Quelle sehen kann, dasActionPopupWindow erscheint mit den Optionen PASTE / REPLACE. ActionPopupWindow ist eine geschützte Variable (mActionPopupWindow) in der privaten abstrakten Klasse HandleView in der öffentlichen Klasse android.widget.Editor ...

Kurzes Deaktivieren des Zwischenablagedienstes oder Bearbeiten des Android-Quellcodes. Kann ich verhindern, dass dieser Dienst angezeigt wird? Ich habe versucht, einen neuen Stil für @ zu definiereandroid:textSelectHandleWindowStyle und setandroid:visibility zugone, aber es hat nicht funktioniert (App fror eine Weile ein, als es sonst angezeigt hätte).

Antworten auf die Frage(22)

Ihre Antwort auf die Frage