it-swarm.com.de

Wie setzt man die Cursorposition in EditText?

Es gibt zwei EditText, beim Laden der Seite wird im ersten EditText ein Text gesetzt. Nun befindet sich der Cursor an der Startposition von EditText. Ich möchte Cursorposition im zweiten EditText setzen die keine Daten enthält. Wie macht man das?

205
nila

Wo ist Position ein Int:

editText1.setSelection(position)
423
NotACleverMan

Ich habe auf diese Weise den Cursor auf Ende des Textes gesetzt, nachdem der Text von EditText programmgesteuert aktualisiert wurde Hier ist etmsg EditText

etmsg.setText("Updated Text From another Activity");
int position = etmsg.length();
Editable etext = etmsg.getText();
Selection.setSelection(etext, position);
92
MKJParekh

Festlegen der EditText-Cursorposition in Android

Der folgende Code ist Setzen Sie den Cursor auf Start in EditText:

 EditText editText = (EditText)findViewById(R.id.edittext_id);
 editText.setSelection(0);

Der folgende Code ist Setzt den Cursor auf Ende der EditText:

EditText editText = (EditText)findViewById(R.id.edittext_id);
editText.setSelection(editText.getText().length());

Unter dem folgenden Code wird der Cursor nach einer 2. Zeichenposition gesetzt:

 EditText editText = (EditText)findViewById(R.id.edittext_id);
 editText.setSelection(2);
30
IntelliJ Amiya

Ich möchte die Cursorposition in edittext setzen, die keine Daten enthält

Es gibt nur eine Stelle in einem leeren EditText, nämlich setSeletion(0) .

Oder meinten Sie, Sie möchten sich auf Ihre EditText konzentrieren, wenn Ihre Aktivität beginnt? In diesem Fall ist seine requestFocus()

14
Reno

verwenden Sie die folgende Zeile

e2.setSelection(e2.length());

e2 ist Textobjektname bearbeiten

11

Lassen Sie editText2 Ihre zweite EditText-Ansicht. Dann fügen Sie den folgenden Code in onResume () ein.

editText2.setFocusableInTouchMode(true);
editText2.requestFocus();

oder setzen 

<requestFocus />

in Ihrem XML-Layout der zweiten EditText-Ansicht.

9
monish george

textbearbeitungscursor donot kommt an einer bestimmten Stelle, wenn wir editText.setSelection(position); ..__ direkt verwenden. In diesem Fall können Sie es versuchen 

editText.post(new Runnable() {
                @Override
                public void run() {
                    editText.setSelection(string.length());
                }
            });
6
dev.sourabh

Die setSelection(int index)-Methode in Edittext sollte dies ermöglichen.

5
Avinash

zur Erinnerung: Wenn Sie den Cursor mit edittext.setSelection() setzen und der Parameter NICHT beim Einrichten einer alertdialog arbeitet, stellen Sie sicher, dass selection() NACH dem Erstellen des Dialogs eingestellt ist

beispiel:

AlertDialog dialog = builder.show();
input.setSelection(x,y);
4
calav3ra

Dieser Code hilft Ihnen, den Cursor an der letzten Stelle der Textbearbeitung anzuzeigen.

 editText.requestFocus();
 editText.setSelection(editText.length());
3
Kailas Bhakade

Erinnern Sie sich an den Aufruf requestFocus() vor setSelection für edittext.

2
Dong Thang

Wenn Sie den Cursor an einer bestimmten Position in einem EditText platzieren möchten, können Sie Folgendes verwenden:

yourEditText.setSelection(position);

Darüber hinaus besteht die Möglichkeit, die Anfangs- und Endposition festzulegen, sodass Sie programmgesteuert Text auswählen:

yourEditText.setSelection(startPosition, endPosition);

Bitte beachten Sie, dass das Einstellen der Auswahl möglicherweise schwierig ist, da Sie den Cursor vor oder nach eines Zeichens setzen können. Das folgende Bild zeigt, wie in diesem Fall indiziert wird:

 enter image description here

Wenn Sie den Cursor am Ende des Texts haben möchten, setzen Sie ihn einfach auf yourEditText.length().

1
Junior Damacena
EditText editText = findViewById(R.id.editText);
editText.setSelection(editText.getText().length());
1
Satendra Behre

Ich bekomme die setSelection () -Methode nicht direkt, also habe ich es wie unten und. Arbeit wie Charme

EditText editText = (EditText)findViewById(R.id.edittext_id);
editText.setText("Updated New Text");
int position = editText.getText().length();
Editable editObj= editText.getText();
Selection.setSelection(editObj, position);
1
sujith s

Wenn Sie den Cursor nach n von rechts nach links setzen wollen, müssen Sie dies tun.

edittext.setSelection(edittext.length()-n);

Wenn der Text von Edittext gefällt

version<sub></sub>

und Sie möchten den Cursor an der 6. Position von rechts bewegen

Dann bewegt es den Cursor um

    version<sub> </sub>
                ^
1

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)) verwenden, um die Cursorposition festzulegen ..__ Die folgenden Aufrufe der Methode können gemacht werden:

  • getIndexFromPos(x, y) Gehe zur Spalte y der Zeile x
  • getIndexFromPos(x, -1) Gehe zur letzten Spalte der Zeile x
  • getIndexFromPos(-1, y) Gehe zur Spalte y der letzten Zeile
  • getIndexFromPos(-1, -1) Gehe zur letzten Spalte der letzten Zeile

Alle Zeilen- und Spaltengrenzen werden behandelt. Wenn Sie eine Spalte eingeben, die größer als die Zeilenlänge ist, wird die Position an der letzten Spalte der Zeile angezeigt. Wenn Sie eine Zeile eingeben, die größer ist als die Anzahl der EditText-Zeilen, wird die letzte Zeile angezeigt. Es sollte zuverlässig genug sein, da es intensiv getestet wurde.

static final String LINE_SEPARATOR = System.getProperty("line.separator");

int getIndexFromPos(int line, int column) {
    int lineCount = getTrueLineCount();
    if (line < 0) line = getLayout().getLineForOffset(getSelectionStart());  // No line, take current line
    if (line >= lineCount) line = lineCount - 1;  // Line out of bounds, take last line

    String content = getText().toString() + LINE_SEPARATOR;
    int currentLine = 0;
    for (int i = 0; i < content.length(); i++) {
        if (currentLine == line) {
            int lineLength = content.substring(i, content.length()).indexOf(LINE_SEPARATOR);
            if (column < 0 || column > lineLength) return i + lineLength;  // No column or column out of bounds, take last column
            else return i + column;
        }
        if (String.valueOf(content.charAt(i)).equals(LINE_SEPARATOR)) currentLine++;
    }
    return -1;  // Should not happen
}

// Fast alternative to StringUtils.countMatches(getText().toString(), LINE_SEPARATOR) + 1
public int getTrueLineCount() {
    int count;
    String text = getText().toString();
    StringReader sr = new StringReader(text);
    LineNumberReader lnr = new LineNumberReader(sr);
    try {
        lnr.skip(Long.MAX_VALUE);
        count = lnr.getLineNumber() + 1;
    } catch (IOException e) {
        count = 0;  // Should not happen
    }
    sr.close();
    return count;
}

Die Frage wurde bereits beantwortet, aber ich dachte, jemand könnte dies stattdessen tun.

Es wird durch jedes Zeichen geleitet, wobei die Zeilenzahl jedes Mal erhöht wird, wenn ein Zeilentrennzeichen gefunden wird. Wenn die Zeilenzahl der gewünschten Zeile entspricht, wird der aktuelle Index + die Spalte oder der Zeilenende-Index zurückgegeben, wenn die Spalte außerhalb der Grenzen liegt. Sie können die getTrueLineCount()-Methode auch wiederverwenden. Sie gibt im Gegensatz zu TextView.getLineCount() eine Zeilenanzahl zurück und ignoriert den Textumbruch.

0
Nicolas

Möchten Sie die Cursorposition in EditText setzen? probieren Sie diesen Code aus

EditText rename;
 String title = "title_goes_here";
 int counts = (int) title.length();
 rename.setSelection(counts);
 rename.setText(title);
0
Mujahid khan