如何避免" actionDone" for EditText

时间:2015-11-15 18:12:06

标签: android android-edittext android-softkeyboard imeoptions

我正在尝试为我的EditText显示软键盘。这里我遇到了关于imeoptions的问题。我的要求是:当切换softkeyboard时,actionDone永远不会对用户可见。所以actionNext应该是可见的。 我面临的是:当用户切换键盘时,第一次显示actionNext但是当用户输入数据然后点击键盘切换器时它显示actionDone选项。但是这里我只想要actionNext.Beside,如果用户清除了字段和再次切换键盘它只显示actionDone但不显示actionNext。 结论:我只想在任何场景中使用actionNext。 这是我切换软键盘的代码:

btn_keyboard.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
         //actv_ServiceLoc.setInputType(InputType.TYPE_CLASS_TEXT);
         InputMethodManager inputMgr = (InputMethodManager)                      
           getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
         //inputMgr.toggleSoftInput(EditorInfo.IME_ACTION_NEXT,   
          EditorInfo.IME_ACTION_DONE);
      inputMgr.toggleSoftInput
       (EditorInfo.IME_FLAG_NO_ENTER_ACTION,EditorInfo.IME_ACTION_DONE);
       //actv_ServiceLoc.setText("");

        actv_ServiceLoc.requestFocus();
       if(actv_ServiceLoc.getText().toString().length()==0) {
        actv_ServiceLoc.setImeOptions(EditorInfo.IME_ACTION_NEXT);
         }
         else
              {
           actv_ServiceLoc.setImeOptions(EditorInfo.IME_ACTION_NEXT);

              }
         actv_ServiceLoc.setFocusableInTouchMode(true);
               location_error.setVisibility(myView.GONE);

                  }
               });

提前致谢。

2 个答案:

答案 0 :(得分:1)

事实上,我们无法在Android键盘上禁用done(输入)操作按钮。

但是我们只能通过添加android来禁用下一个按钮:imeOptions =" actionDone"到您的EditText。

然后,控制完成按钮的最后一个解决方案是使用以下代码块:

EditText txtEdit = (EditText) findViewById(R.id.txtEdit);
txtEdit.setOnEditorActionListener(new OnEditorActionListener() {

  public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    if (actionId == EditorInfo.IME_ACTION_DONE) {
      // your additional processing... 
      return true;
    } else {
      return false;
    }
  }
});

答案 1 :(得分:0)

在切换键盘之前写下单行可帮助您在键盘中始终显示“actionNext”按钮。

actv_ServiceLoc.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);
//your ui control.setInputType(InputType.YourFlag);