textView.getSelectionEnd () gibt den Startindexwert für Samsung Marshmallow 6.0-Geräte zurück

8

Dieses Problem tritt nur bei Samsung-Geräten mit Android 6.0 auf. Es funktioniert gut auf allen anderen Geräten, einschließlich Nicht - Samsung - Geräten mit Android 6.0 und Samsung - Geräten mit Android 5.1 und niedriger.

Momentan haben wir kein Samsung-Gerät mit Android 6.0, um die Dinge darauf zu überprüfen, aber wir arrangieren es bald.

Die Funktion, in der wir dies verwenden:

Der Benutzer drückt lange auf ein Wort aus einem Satz in einem TextView und der Benutzer kann dann das ausgewählte Wort bearbeiten.

Wir erreichen dies durch:

  • TextView auswählbar machen und einen LongClickListener hinzufügen.
  • Hinzufügen eines benutzerdefinierten Selection-Action-Modus CallBack und Überschreiben von onCreateActionMode (), um false zurückzugeben, da wir den standardmäßigen cut-copy-paste-Aktionsmodus nicht benötigen.
  • Behandeln des onLongClickListener, um das genau ausgewählte Wort zu erhalten und eine Benutzeroberfläche zum Korrigieren und Ersetzen des Wortes bereitzustellen.

Das Problem, vor dem wir stehen:

textView.getSelectionStart () gibt den richtigen Startindex zurück, aber textView.getSelectionEnd () gibt den Wert des Startindex anstelle des Endindex zurück. Wir haben eine Guard-Bedingung, dass, wenn Start- und Ende-Index gleich sind, die Auswahl für ein Leerzeichen ist und daher ignoriert wird. Daher werden alle Wortauswahl auf Samsung-Geräten mit Android 6.0 und höher ignoriert, was zu einem Feature-Fehler führt.

>

Dinge, die wir versucht haben:

  • Wir haben versucht, ActionMode.Callback durch zu ersetzen ActionMode.Callback2 wie unter "Textauswahl" auf der Seite erwähnt Android 6.0 Änderungen , aber es hat nicht geholfen, dies zu beheben Ausgabe.
  • Ich habe versucht, nach einer zusätzlichen Samsung-Einstellung zu suchen, die mit Textauswahl, Zwischenablage usw. in Verbindung steht, aber kein Glück. Ich weiß, dass dies eine lahme Option sein kann, aber ich gehe kein Risiko mit Samsung Touchwiz. Ich habe eine Einstellung gefunden, um die Verzögerung für die Berührungsauswahl zwischen 0,5 und 2,0 Sekunden zu ändern.

Die Code-Schnipsel:

%Vor%

Der XML-Code für das TextView und seinen Stil:

%Vor%

Jede Hilfe in Bezug auf dieses Problem wird geschätzt.

    
binaryKarmic 25.05.2016, 06:47
quelle

1 Antwort

1

Überprüfen Sie die Build-Version Wenn Buildversion & gt; = 6 return true ist, implementieren Sie eine schwebende Symbolleiste mit Ihrem benutzerdefinierten Layout. Wenn Buildversion & lt; 6 false zurückgibt, verwende deine aktuelle Implementierung

    
NIPHIN 12.06.2016 12:21
quelle