Java 在“回收器”视图中切换到下一个编辑文本时,如何保持软键盘处于打开状态?

Java 在“回收器”视图中切换到下一个编辑文本时,如何保持软键盘处于打开状态?,java,android,android-recyclerview,Java,Android,Android Recyclerview,我面临的问题是,当用户单击键盘上的“下一步”按钮时,程序应关注屏幕上的下一个编辑文本,并保持键盘打开,直到屏幕上不再有已启用的编辑文本。当没有更多已启用的编辑文本时,键盘应消失 另一个问题是,当屏幕上当前不可见EditText时,在用户选择它之前,它不会获得焦点 我曾尝试使用输入法管理器在EditText有焦点时显示键盘,在没有焦点时隐藏键盘。如果没有更多已启用的EditText,则键盘仍然存在 final InputMethodManager imm = (InputMethodManager

我面临的问题是,当用户单击键盘上的“下一步”按钮时,程序应关注屏幕上的下一个编辑文本,并保持键盘打开,直到屏幕上不再有已启用的编辑文本。当没有更多已启用的编辑文本时,键盘应消失

另一个问题是,当屏幕上当前不可见EditText时,在用户选择它之前,它不会获得焦点

我曾尝试使用输入法管理器在EditText有焦点时显示键盘,在没有焦点时隐藏键盘。如果没有更多已启用的EditText,则键盘仍然存在

final InputMethodManager imm = (InputMethodManager) 
context.getSystemService(Context.INPUT_METHOD_SERVICE);

    if (variable.getType().equals("Value")) {
        if (variable.getFormat().equals("Number") || variable.getFormat().equals("2Number")) {
            viewHolder.inputValue.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
                    if(hasFocus){
                        imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
                    } else if(hasFocus && !viewHolder.inputValue.isEnabled()){
                        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
                    }
                }
            });
        } else if (variable.getFormat().equals("Text")) {
            viewHolder.messageText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
                    if(hasFocus){
                        imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
                    } else if(hasFocus && !viewHolder.inputValue.isEnabled()){
                        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
                    }
                }
            });
        }
    } else if (variable.getType().equals("Message")) {
        viewHolder.messageText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean hasFocus) {
                if(hasFocus){
                    imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
                } else if(hasFocus && !viewHolder.inputValue.isEnabled()){
                    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
                }
            }
        });
    } else {
        //imm.hideSoftInputFromWindow(viewHolder.itemView.getWindowToken(), 0);
    }
EditText存储在recyclerview中的CardView中。每个卡都有一个变量类型。单击键盘上的“下一步”按钮时,只有“值”和“消息”变量类型应接收焦点


我希望用户能够通过单击键盘上的“下一步”按钮,在RecyclerView中滚动启用的编辑文本。如果编辑文本不在屏幕视图内,屏幕应向下滚动以获得焦点。此外,如果编辑文本被禁用,它将永远不会获得焦点。

覆盖
onEditorAction
方法,并为每个要保持键盘打开的编辑文本返回
true

edittext.setOnEditorActionListener(new TextView.OnEditorActionListener() {
      @Override
      public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
          if (actionId == EditorInfo.IME_ACTION_DONE) {
             //optional: you can run some logic here.
          }
          //return true to not hide the keyboard
          return true;
      }
});

@克里斯:这个答案对你有帮助吗?它@Sapnesh,有道理,但它并没有解决我的问题(键盘仍然不见了。我不知道如何让程序在recyclerview中找到CardView中的其他编辑文本。