2016-12-14 2 views
0

enter image description hereAndroid: Сохраняя экранную клавиатуру открыты даже нажав кнопку Готово

Здесь, нажав кнопку done, экранная клавиатура автоматически выключается, но я хочу, чтобы держать его открытым.

Вот текущий код внутри метода onCreate().

final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 

etPIN.setOnKeyListener(new View.OnKeyListener() { 
    @Override 
    public boolean onKey(View view, int keyCode, KeyEvent keyEvent) { 
     if((keyEvent.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
      String pin1 = etPIN.getText().toString(); 
      Toast.makeText(PINActivity.this, pin1, Toast.LENGTH_SHORT).show(); 

      tvPINGuide.setText(getString(R.string.confirm_pin)); 
      etPIN.setText(""); 
     } 
     return false; 
    } 
}); 

ответ

1

Если вы вернетесь true из вашей перекрытой методы onEditorAction, система не будет обрабатывать действие снова. Итак, в этом случае вы должны вернуть true, чтобы не скрывать клавиатуру, когда действие равно EditorInfo.IME_ACTION_DONE.

Здесь используйте этот код:

edittext.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_DONE) { 

      } 
      return true; 
     } 
    }); 
+0

Это работает. Спасибо за ответ! –

0

Попробуйте этот код

если ваше возвращение правда из метода onEditorAction, действие не будет обрабатываться снова. В этом случае вы можете вернуть true, чтобы не скрывать клавиатуру, когда действие является EditorInfo.IME_ACTION_DONE.

editText = (EditText) findViewById(R.id.edit_text); 
    editText.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      if (actionId == EditorInfo.IME_ACTION_DONE) { 
       // do your stuff here 
if (editText.getText().toString().equals(PIN)) // they entered correct 
     { 
      // log them in 
      return false; // close the keyboard 
     } 
     else 
     { 
      Toast.makeText(Main.this, "Incorrect.", Toast.LENGTH_SHORT).show(); 
      return true; // keep the keyboard up 
     } 
      } 
      return false; 
     } 
    }); 
0

Попробуйте это, его просто

etPIN.setOnEditorActionListener(new TextView.OnEditorActionListener() { 
      @Override 
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
       if (actionId == EditorInfo.IME_ACTION_DONE) { 
        //do your stuff here 
       } 
       return true; 
      } 
     }); 
0

Попробуйте это один

Это поможет вам определенно

etPIN.setOnKeyListener(new View.OnKeyListener() 
{ 
     @Override 
     public boolean onKey(View view, int keyCode, KeyEvent keyEvent) 
     { 
      if((keyEvent.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) 
      { 
       String pin1 = etPIN.getText().toString(); 
       Toast.makeText(PINActivity.this, pin1, Toast.LENGTH_SHORT).show(); 

       tvPINGuide.setText(getString(R.string.confirm_pin)); 
       etPIN.setText(""); 
      } 
      if (keyEvent.getKeyCode() == KeyEvent.FLAG_EDITOR_ACTION) // when done button pressed 
      { 
       // it will open your keyboard again here 
       InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); 
       inputMethodManager.toggleSoftInputFromWindow(etPIN.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0); 
       etPIN.requestFocus(); 
      } 
      return false; 
     } 
    }); 
Смежные вопросы