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