Java 事件焦点在编辑文本上
我有一个EditText,其中EditText获得焦点,它会改变EditText的功能,当我失去EditText的焦点时,它会再次改变功能 这是我的源代码:Java 事件焦点在编辑文本上,java,android,events,Java,Android,Events,我有一个EditText,其中EditText获得焦点,它会改变EditText的功能,当我失去EditText的焦点时,它会再次改变功能 这是我的源代码: tambah = (EditText)rootView.findViewById(R.id.total); tambah.setOnFocusChangeListener(new OnFocusChangeListener(){ @Override public void onFocusChange(View arg0, boolean a
tambah = (EditText)rootView.findViewById(R.id.total);
tambah.setOnFocusChangeListener(new OnFocusChangeListener(){
@Override
public void onFocusChange(View arg0, boolean arg1) {
try {
if(..) //i want to check, i get focus
{...}else //if i loss focus, the textbox do something
{...}
} catch (Exception e) {
}
}
对于第一次单击edittext时的结果,edittext没有执行任何操作。当我输入“1000”并失去焦点时,edittext变为“1.000”。但当我再次单击edittext时,它又变为“1000”。请帮助我,如果我的语法不好,请道歉。布尔标志=true
tambah = (EditText)rootView.findViewById(R.id.about_header);
tambah.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
flag = !flag;
if(v == tambah && flag) {
//format your text to 1000 here
}
else if(v == tambah && !flag) {
//format your text to 1.000 here
}
}
});
编辑:
如果您需要一个简单的格式化程序,可以使用十进制格式化程序
double d = 1.000;
DecimalFormat df1 = new DecimalFormat("#.###");
DecimalFormat df2 = new DecimalFormat("####");
String newD1 = df1.format(d); // 1.000
String newD2 = df2.format(d); // 1000
当我输入两次edittext时,仍然会得到一个“1.000”。我想如果编辑文本有一个“1.000”,我再次点击它,它会再次变成“1000”。我是如何得到它的?是的,我自动生成的变量名可能不同,很高兴你能弄明白:)啊。。所以这不是焦点问题。但是,当您第二次单击editText时,您仍然会聚焦editText。如果你想像你现在告诉我的那样做,你需要用一个标志来控制它。不,我的意思是,当我第一次单击时,edittext没有长度,或者我们称之为“null”。所以它什么都没有,但是当我输入1000,我失去了edittext的焦点,它变成了“1.000”。当我再次单击edittext时,数字再次变为1000。当我失去另一个焦点时,它又变成了1.000。你明白了吗?哈哈哈,我就是这么说的。您需要聚焦另一个视图或手动清除EditText的焦点以更改焦点。我的预编辑版本是这样工作的,当你改变焦点时,比如说你点击另一个EditText,你的文本将变成1.000,当你点击EditText,你的文本将变成1000。您正在尝试根据键盘显示更改文本吗?因为你告诉我的方式不是专注。