我正在使用RecyclerView来保存一堆CardView,其中包含EditText。用户应编辑文本并通过单击软键盘上的“继续/完成”按钮继续到下一个CardView。当下一个EditText聚焦时,软键盘应保持打开状态。卡视图与电话屏幕一样宽,需要水平/从右向左滚动。 我的代码已经可以识别单击“继续”按钮,但是我仍然无法转移焦点。 请让我知道这是否可行以及是否可行。谢谢
答案 0 :(得分:0)
一种实现方法是在类中添加一个扩展RecyclerView.ViewHolder的方法。
public static class MyViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public CardView mCardView;
public EditText mEditText;
public MyViewHolder(CardView v) {
super(v);
mCardView = v;
mEditText = v.findViewById(R.id.mEditText);
}
public void takeFocus() {
if (mEditText != null && mEditText.isShown()) {
mEditText.requestFocus();
}
}
}
根据是否使用其他ViewHolder类,您可能希望在调用takeFocus()方法之前添加一些逻辑,例如mViewHolder instanceOf MyViewHolder。
答案 1 :(得分:0)
我解决了。
首先,我必须从“回收者”视图滚动到该项目,然后调用编辑文本的requestFocus()
方法。
为了防止使用软键盘/ IME,我使用了InputMethodManager
来强制显示IME。