【问题标题】:Shift focus to next EditText in another RecyclerView item (CardView)将焦点转移到另一个 RecyclerView 项目 (CardView) 中的下一个 EditText
【发布时间】:2018-10-16 19:28:05
【问题描述】:

我正在使用 RecyclerView 来保存一堆 CardView,其中包含一个 EditText。用户应编辑文本并通过单击软键盘上的“继续/完成”按钮继续下一个 CardView。当下一个 EditText 获得焦点时,软键盘应该保持打开状态。卡片视图与手机屏幕一样宽,需要水平/从右到左滚动。 我的代码已经可以识别“继续”按钮单击,但我一直在转移焦点。 请让我知道这是否可行以及是否可行。谢谢

【问题讨论】:

    标签: android android-recyclerview android-edittext focus cardview


    【解决方案1】:

    一种方法是向您的类添加一个扩展 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。

    【讨论】:

      【解决方案2】:

      我解决了。

      首先,我必须从回收站视图滚动到该项目,然后调用编辑文本的requestFocus() 方法。 为了防止软键盘/IME,我使用InputMethodManager 来强制显示 IME。

      【讨论】:

        猜你喜欢
        • 2021-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-02
        • 1970-01-01
        • 2015-01-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多