Es gibt zwei EditText
Möglichkeiten, während beim Laden der Seite ein Text im ersten EditText gesetzt wird. Jetzt befindet sich der Cursor an der Startposition von EditText
. Ich möchte die Cursorposition im zweiten EditText setzen, der keine Daten enthält. Wie macht man das?
235
Antworten:
Wo Position ein int ist:
quelle
Ich habe auf diese Weise die Cursorposition auf das Ende des Textes gesetzt, nachdem der Text von EditText hier programmgesteuert aktualisiert wurde. Dies
etmsg
ist EditTextquelle
etmsg.setText("my new text..."); etmsg.setSelection(etmsg.length());
So legen Sie die Position des EditText-Cursors in Android fest
Unterhalb des Codes befindet sich der Cursor auf Start in
EditText
:Unterhalb des Codes befindet sich der Cursor auf das Ende des
EditText
:Unterhalb des Codes befindet sich der Cursor nach einer 2. Zeichenposition:
quelle
Es gibt nur eine Position in einem leeren EditText
setSelection(0)
.Oder meinten Sie, Sie möchten sich beim Öffnen
EditText
Ihrer Aktivität auf Ihre konzentrieren ? In diesem Fall ist esrequestFocus()
quelle
Verwenden Sie die folgende Zeile
e2
ist Text bearbeiten Objektnamequelle
Lassen Sie editText2 Ihre zweite EditText-Ansicht sein. Fügen Sie dann den folgenden Code in onResume () ein.
oder setzen
in Ihrem XML-Layout der zweiten EditText-Ansicht.
quelle
Einige Zeit bearbeiten Textcursor nicht an einer bestimmten Position kommt, wenn wir direkt verwenden
editText.setSelection(position);
. In diesem Fall können Sie es versuchenquelle
Wenn Sie den Cursor an einer bestimmten Position in einem EditText platzieren möchten, können Sie Folgendes verwenden:
Darüber hinaus besteht die Möglichkeit, die Anfangs- und Endposition so festzulegen, dass Sie programmgesteuert Text auswählen:
Bitte beachten Sie, dass das Festlegen der Auswahl schwierig sein kann, da Sie den Cursor vor oder nach einem Zeichen platzieren können. In der folgenden Abbildung wird erläutert, wie die Indizierung in diesem Fall funktioniert:
Wenn Sie also den Cursor am Ende des Textes haben möchten, setzen Sie ihn einfach auf
yourEditText.length()
.quelle
setSelection(int index)
Methode inEdittext
sollte es Ihnen ermöglichen, dies zu tun.quelle
edittext.setSelection()
Zur Erinnerung: Wenn Sie den Cursor zum Setzen verwenden und dieser beispielsweise beim Einrichten NICHT funktioniertalertdialog
, stellen Sie sicher, dass Sie denselection()
NACH dem Erstellen des Dialogfelds einstellenBeispiel:
quelle
Mit diesem Code können Sie Ihren Cursor an der letzten Position der Textbearbeitung anzeigen.
quelle
Denken Sie daran,
requestFocus()
vorhersetSelection
für edittext anzurufen.quelle
quelle
Wenn Sie den Cursor nach dem
n
Zeichen von rechts nach links setzen möchten, müssen Sie dies tun.Wenn der Text von edittext gefällt
und Sie möchten den Cursor an der 6. Position von rechts bewegen
Dann bewegt es den Cursor auf
quelle
quelle
quelle
Setzen Sie den Cursor auf eine Zeile und eine Spalte
Mit dem folgenden Code können Sie die Position in Ihrem EditText ermitteln, die einer bestimmten Zeile und Spalte entspricht. Sie können dann
editText.setSelection(getIndexFromPos(row, column))
die Cursorposition einstellen. Die Methode kann folgendermaßen aufgerufen werden:getIndexFromPos(x, y)
Gehen Sie zur Spalte y der Zeile xgetIndexFromPos(x, -1)
Gehen Sie zur letzten Spalte der Zeile xgetIndexFromPos(-1, y)
Gehen Sie zur Spalte y der letzten ZeilegetIndexFromPos(-1, -1)
Gehen Sie zur letzten Spalte der letzten ZeileAlle Zeilen- und Spaltengrenzen werden behandelt. Wenn Sie eine Spalte eingeben, die größer als die Zeilenlänge ist, wird die Position in der letzten Spalte der Zeile zurückgegeben. Wenn Sie eine Zeile eingeben, die größer als die Zeilenanzahl des EditText ist, wird die letzte Zeile angezeigt. Es sollte zuverlässig genug sein, da es stark getestet wurde.
Die Frage wurde bereits beantwortet, aber ich dachte, jemand könnte das stattdessen tun wollen.
Dabei werden die einzelnen Zeichen durchlaufen und die Zeilenanzahl jedes Mal erhöht, wenn ein Zeilentrennzeichen gefunden wird. Wenn die Zeilenanzahl der gewünschten Zeile entspricht, wird der aktuelle Index + die Spalte oder der Zeilenendindex zurückgegeben, wenn die Spalte außerhalb der Grenzen liegt. Sie können die
getTrueLineCount()
Methode auch wiederverwenden. Im Gegensatz dazu wird eine Zeilenanzahl zurückgegeben, bei der der Textumbruch ignoriert wirdTextView.getLineCount()
.quelle
In Kotlin können Sie eine Erweiterungsfunktion wie folgt erstellen:
und dann einfach anrufen
myEditText.placeCursorAtLast()
quelle
Wenn Sie die Cursorposition in EditText setzen möchten? Versuchen Sie diesen folgenden Code
quelle
So beheben Sie das Problem mit der Cursorposition, das nach dem Formatieren in US Mobile wie (xxx) xxx-xxxx in Android automatisch an die letzte Position verschoben wird.
Definieren Sie die folgende Methode für jede Aktivitätsklasse in meinem Fall. Der Aktivitätsname lautet AppUtil und greifen Sie global darauf zu
Und wenn Sie eine bestimmte Position festlegen möchten
quelle
Ich glaube, der einfachste Weg, dies zu tun, ist nur die Polsterung.
Sagen Sie im Edittext-Bereich Ihrer XML, fügen Sie android hinzu: paddingLeft = "100dp" Dadurch wird Ihre Startposition des Cursors 100dp vom linken Ende nach rechts verschoben.
Genauso können Sie Android verwenden: paddingRight = "100dp" Dies verschiebt Ihre Endposition des Cursors 100dp vom rechten Ende nach links.
Weitere Informationen finden Sie in diesem Artikel in meinem Blog : Android: Festlegen der Start- und Endposition des Cursors im EditText-Widget
quelle