Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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 显示软键盘时按下后退按钮时清除焦点编辑文本_Android_Focus_Android Edittext_Android Softkeyboard_Back Button - Fatal编程技术网

Android 显示软键盘时按下后退按钮时清除焦点编辑文本

Android 显示软键盘时按下后退按钮时清除焦点编辑文本,android,focus,android-edittext,android-softkeyboard,back-button,Android,Focus,Android Edittext,Android Softkeyboard,Back Button,我知道关于这个问题这里有很多问题。但他们中没有一个有我正在寻找的答案 我在滚动视图中有7个ET。当我启动应用程序时,没有ET具有焦点,因为我在总体布局中添加了以下两行: android:focusable="true" android:focusableInTouchMode="true" 当我点击ET时,会显示我想要的软键盘,然后我设置值(比如说20)。我先按“2”再按“0”,然后按“后退”按钮。此时键盘消失,但焦点保持不变。当按下后退按钮隐藏键盘时,我也想清除焦点 因为当焦点被清除时,ET

我知道关于这个问题这里有很多问题。但他们中没有一个有我正在寻找的答案

我在滚动视图中有7个ET。当我启动应用程序时,没有ET具有焦点,因为我在总体布局中添加了以下两行:

android:focusable="true"
android:focusableInTouchMode="true"
当我点击ET时,会显示我想要的软键盘,然后我设置值(比如说20)。我先按“2”再按“0”,然后按“后退”按钮。此时键盘消失,但焦点保持不变。当按下后退按钮隐藏键盘时,我也想清除焦点

因为当焦点被清除时,ET的布局就像我想要的那样

他们都有一些代码,即:

    // Right Cable
    RightCable = (EditText) findViewById (R.id.RightCable);
    RightCable.setRawInputType(Configuration.KEYBOARD_12KEY);
    RightCable.setOnFocusChangeListener(FocusChanged);
    RightCable.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            if(RightCable.isFocused()){
                LengthRightCable       = Double.parseDouble(RightCable.getText().toString());
                Calculate();
            }
        }
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(s.toString().matches("")) {
                RightCable.setText("0.00");
                Selection.setSelection(RightCable.getText(), 0, 4);
            }
        }
    });
我使用焦点侦听器将ET的输入更改为5.00之类的数字,而不是0

OnFocusChangeListener FocusChanged = new OnFocusChangeListener() {

    public void onFocusChange(View v, boolean hasFocus) {

        EditText et = (EditText) v;

        et.setSelection(0, et.getText().length());

        if(!hasFocus){
            String userInput = et.getText().toString();

            int dotPos = -1;    

            for (int i = 0; i < userInput.length(); i++) {
                char c = userInput.charAt(i);
                if (c == '.') {
                    dotPos = i;
                }
            }

            if (dotPos == -1){
                et.setText(userInput + ".00");
            } else if(userInput.length() < 5) {
                if ( userInput.length() - dotPos == 1 ) {
                    et.setText(userInput + "00");
                } else if ( userInput.length() - dotPos == 2 ) {
                    et.setText(userInput + "0");
                }
            }
        }
    }

};
OnFocusChangeListener FocusChanged=new OnFocusChangeListener(){
public void onFocusChange(视图v,布尔hasFocus){
EditText et=(EditText)v;
et.setSelection(0,et.getText().length());
如果(!hasFocus){
字符串userInput=et.getText().toString();
int dotPos=-1;
对于(int i=0;i
为此,您必须在布局文件的父布局上使用onTouchListener。在TouchListener上,当在编辑文本外单击时,必须编写代码以隐藏键盘。请遵循以下XML布局和Java类来解决此问题


请按照下面的url解决此问题

如果您有任何疑问,请在我的博客上发表或发表评论。谢谢,很高兴知道这一点,但不幸的是,这不是我要找的。您希望如果我按下后退键,键盘将不可见,并将焦点放在编辑文本上。对吗?你找到解决办法了吗?我强烈推荐Kacy在所附链接中回答: