Android EditText setText和最后输入文本?

Android EditText setText和最后输入文本?,android,android-edittext,Android,Android Edittext,我使用EditText输入一些信息,并在EditText中设置文本。 但我有一个问题,当编辑文本显示时,键盘也会显示。 当我输入文本时,它将首先添加文本,而不是在我之前设置的文本之后 这是我用键盘编辑的文本 [这里是键盘输入文本]示例我认为您需要设置Selection以移动到文本的末尾 EditText et = (EditText)findViewById(R.id.edittext1); et.setSelection(et.getText().length()); 为此,您可以添加一个t

我使用EditText输入一些信息,并在EditText中设置文本。
但我有一个问题,当编辑文本显示时,键盘也会显示。 当我输入文本时,它将首先添加文本,而不是在我之前设置的文本之后

这是我用键盘编辑的文本


[这里是键盘输入文本]示例我认为您需要设置Selection以移动到文本的末尾

EditText et = (EditText)findViewById(R.id.edittext1);
et.setSelection(et.getText().length());

为此,您可以添加一个textChanged侦听器来编辑文本,并且可以在所需的索引处添加默认文本。(我的意思是您可以重写这些方法来实现您的逻辑)

edittext.addTextChangedListener(新的TextWatcher(){
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
}
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
公共无效后文本已更改(可编辑){
editText.setText(“”;//假设这里的文本是“示例”(长度7)
editText.setSelection();
}
});

在edittext小部件和主类中设置默认文本,实现其文本更改侦听器,为了方便起见,我放置了一条打印语句以查看 输入的文本

package com.example.edittext;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Menu;
import android.widget.EditText;

public class MainActivity extends Activity {
    String defaultText;
    EditText text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (EditText) findViewById(R.id.edittext);
        defaultText  = text.getText().toString();
        text.setSelection(defaultText.length());
        text.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                //text.setText(defaultText+s);

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub
                System.out.println(s.toString());


            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

应按如下方式将选择设置为结束:

EditText editText = (EditText) findViewById(R.id.editText);
editText.setText("smb://");
editText.setSelection(editText.getText().length());
注意:如果您需要一个空格,那么更新
setText
如下:
editText.setText(“示例”)

您可以使用
EditText
上的方法将光标移动到
EditText
的末尾

例如:

EditText et = (EditText)findViewById(R.id.editText);
et.setText("smb://");

// after you set the text, write this line:
et.setSelection(et.length()); 
// or et.setSelection(et.getText().toString().length());

这将把
EditText
中的光标设置在
EditText
中文本的最后一个位置。追加(文本)?我不知道你在问什么。我加上图片来解释我的问题。我想编辑第2页这样的文本,你的问题描述得很糟糕。这些照片是你的救命恩典。@henry4343你试过下面我的答案了吗?这正是我从一开始(1小时前)就在帮助您的内容。@henry4343嗨,Henry,在一个多小时前回答了您相同的问题,以使用EditText SetSelection感谢您的帮助。。如何避免用户覆盖我设置的默认值真的很有用?
EditText et = (EditText)findViewById(R.id.editText);
et.setText("smb://");

// after you set the text, write this line:
et.setSelection(et.length()); 
// or et.setSelection(et.getText().toString().length());