37

在我的应用程序中,我有一个编辑用户详细信息页面,我想在相应的 editText 字段中显示当前姓名、电子邮件地址等,然后用户可以删除它并在需要时输入一个新的。

有没有办法做到这一点?谢谢你的帮助

4

9 回答 9

42

hint特点吗?您可以使用setHint()来设置它,或者在 XML 中设置它(尽管您可能不希望那样,因为 XML 不“知道”您的用户的名称/地址:))

于 2012-04-27T10:36:07.950 回答
37

您可以使用EditText.setText(...)设置 EditText 字段的当前文本。

例子:

yourEditText.setText(currentUserName);
于 2012-04-27T10:36:39.977 回答
25

从xml:

  android:text="yourtext"
于 2012-04-27T10:40:57.680 回答
14

您可以在xml文件中为特定的 Edittext 字段使用text属性。例如 :

<EditText
    android:id="@+id/ET_User"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="yourusername"/>

像这样,所有 Edittext 字段都包含您想要的任何文本,如果用户想要更改特定的 Edittext 字段,他会删除旧文本并输入他的新文本。

另一种方式中,您只需在活动类中获取特定的Edittext 字段 id并将文本设置为那个。

另一种方式=以编程方式

例子:

EditText username=(EditText)findViewById(R.id.ET_User);

username.setText("jack");
于 2012-04-27T12:22:14.733 回答
2

首先,您需要以某种方式加载用户详细信息

然后你需要找到你的 EditText 如果你没有它-

EditText et = (EditText)findViewById(R.id.youredittext);

找到您的 EditText 后,请致电

et.setText(theUserName);
于 2012-04-27T10:59:54.400 回答
2

你可以这样做

private EditText nameEdit;
private EditText emailEdit;
private String nameDefaultValue = "Your Name";
private String emailDefaultValue = "abc@xyz.com";

在 onCreate 方法里面

nameEdit = (EditText) findViewById(R.id.name);
    nameEdit.setText(nameDefaultValue); 
    nameEdit.setOnTouchListener( new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (nameEdit.getText().toString().equals(nameDefaultValue)){
                nameEdit.setText("");
            }
            return false;
        }
    });

    nameEdit.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {               
            if(!hasFocus && TextUtils.isEmpty(nameEdit.getText().toString())){
                nameEdit.setText(nameDefaultValue);
            } else if (hasFocus && nameEdit.getText().toString().equals(nameDefaultValue)){
                nameEdit.setText("");
            }
        }
    });     

    emailEdit = (EditText)findViewById(R.id.email);
    emailEdit.setText(emailDefaultValue);   
    emailEdit.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {               
            if(!hasFocus && TextUtils.isEmpty(emailEdit.getText().toString())){
                emailEdit.setText(emailDefaultValue);
            } else if (hasFocus && emailEdit.getText().toString().equals(emailDefaultValue)){
                emailEdit.setText("");
            }
        }
    });
于 2012-04-27T11:30:12.113 回答
0
 public class Main extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EditText et = (EditText) findViewById(R.id.et);
        EditText et_city = (EditText) findViewById(R.id.et_city);
        // Set the default text of second EditText widget
        et_city.setText("USA");
 }
}
于 2019-10-24T00:36:44.420 回答
0

我们希望在未来版本的 SDK 中,android 视图或组视图的每个视图中都有一个默认值属性。但要克服这个问题,只需在提交之前,检查视图是否为空等于 true,然后分配一个默认值

例子:

   /* add 0 as default numeric value to a price field when skipped by a user,
                    in order to avoid parsing error of empty or improper format value. */
                    if (Objects.requireNonNull(edPrice.getText()).toString().trim().isEmpty())
                    edPrice.setText("0");
于 2021-02-21T21:10:25.567 回答
0

使用 android android:hint 设置默认值或 android:text

于 2020-11-06T11:40:54.097 回答