Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Studio中的EditText_Android - Fatal编程技术网

Android Studio中的EditText

Android Studio中的EditText,android,Android,我有XML格式的EditText,看起来像 EditText获取数字输入。例如,5作为年率,我希望也显示为5.00% 在我的Java代码中,我使用 rateAnnual = (EditText) rootView.findViewById(R.id.rate); rateAnnual.setText(String.format("%,.2f",initialMortgage.getRate())+"%"); 可将文本显示为5.00%; 问题是,当我单击rateAnnual EditText时

我有XML格式的EditText,看起来像

EditText获取数字输入。例如,5作为年率,我希望也显示为5.00%

在我的Java代码中,我使用

rateAnnual = (EditText) rootView.findViewById(R.id.rate);
rateAnnual.setText(String.format("%,.2f",initialMortgage.getRate())+"%");
可将文本显示为5.00%; 问题是,当我单击rateAnnual EditText时,它怎么可能只显示实数5.00并删除%符号以更新值?

您可以不使用“%”而只选择数字,这样:

editText.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        editText.setSelection(0, editText.getText().length() - 2);
    }
}
或者,获取文本并在单击时将文本设置为除“%”之外的所有内容(您在问题中要求的内容):


我在我的应用程序中做了类似的事情

edittext1.setOnFocusChangeListener(new OnFocusChangeListener() {
            String previousText = null;

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    previousText = edittext1.getText().toString();
                    edittext1.setText("");
                } else {
                    if (edittext1.getText().toString().equals(""))
                        edittext1.setText(previousText);
                }
            }
        });
这里我使用一个焦点侦听器和一个名为previousText的字符串变量

当edittext具有焦点时,我将previousText变量设置为当前文本,然后清除edittext中的字符串。这可以很容易地修改,以获得

您还会注意到,当我们失去焦点时,我使用相同的previousText变量将文本设置回原来的状态(如果EditText为空),您可以使用以下变量来应用它:

 rateAnnual.setText(String.format("%,.2f",initialMortgage.getRate())+"%");

这种方法并不能完全复制您所要求的,但我认为它提供的自动清除功能对于用户体验来说是非常好的

为什么不在包含“%”的编辑字段旁边创建一个标签呢?这样,您就不需要将其显示为编辑字段的一部分。
 previousText = edittext1.getText().toString().substring(0, 4);
 rateAnnual.setText(String.format("%,.2f",initialMortgage.getRate())+"%");