【问题标题】:Android EditText setText and input text in last?Android EditText setText 并在最后输入文本?
【发布时间】:2013-12-27 03:54:06
【问题描述】:

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

这是我的带键盘的editText

[这里是键盘输入文本]example

我需要在这样的文本之后设置输入文本

示例[这里是键盘输入文本]

感谢您的帮助....

【问题讨论】:

  • editText.append(text)?我不知道你在问什么。
  • 我添加图片来解释我的问题。我想像第 2 页图片一样编辑文本
  • 您的问题被描述为可怕。图片是你的救命稻草。
  • @henry4343 你试过我下面的答案了吗?这正是我从一开始(1 小时前)就在帮助你的事情。
  • @henry4343 嗨,Henry,一个多小时前已经回答了你同样的问题,以便使用 EditText setSelection

标签: android android-edittext


【解决方案1】:

我认为您需要 setSelection 才能移至文本末尾

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

【讨论】:

  • 如何避免用户覆盖我设置的默认值?
【解决方案2】:

您应该将选择设置为结束,如下所示:

EditText editText = (EditText) findViewById(R.id.editText);
editText.setText("smb://");
editText.setSelection(editText.getText().length());

注意:如果您需要空格,请更新您的setText 如下:editText.setText("example ");

【讨论】:

  • 感谢帮助.. 真的很有用
【解决方案3】:

在你的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;
    }

}

【讨论】:

    【解决方案4】:

    您可以使用EditText 上的setSelection(int index) 方法将光标 移动到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 中文本的最后一个位置。

    【讨论】:

      【解决方案5】:

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

      edittext.addTextChangedListener(new TextWatcher() {
          @Override
          public void onTextChanged(CharSequence s, int start, int before, int count) {
      
          }
      
          @Override
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {
          }
      
          @Override
          public void afterTextChanged(Editable s) {
              editText.setText("<add your desired text here>");//for suppose here your text is "example" (length 7 )
              editText.setSelection(<your text length[here 7 for the text "example"]>);            
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-22
        • 2011-05-15
        • 1970-01-01
        • 2011-11-08
        • 1970-01-01
        • 1970-01-01
        • 2014-10-19
        • 1970-01-01
        相关资源
        最近更新 更多