Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recycleview #10

Open
realchen opened this issue Mar 24, 2020 · 9 comments
Open

Recycleview #10

realchen opened this issue Mar 24, 2020 · 9 comments

Comments

@realchen
Copy link

我这边是一个Recycleview,里面会有很多个Edittext,现在需求需要点击键盘中下一个按钮,可以自动跳到下一个Edittext

目前我这边已经实现焦点跳转到下一个Edittext,但是怎么让键盘在获取后也能弹出来呢?
@realchen
Copy link
Author

Update:
通过getKeyboardWindow().showAtLocation 实现了自动底部弹出
但是如何可以把页面也顶上去,现在输入框隐藏在自定义键盘下面了

@Jay-huangjie
Copy link
Owner

你好,你的这个逻辑我目前还没有优化到哈,你可以这样做:
1.将我的项目源码下载下来拷贝到项目于中
2.找到KeyBoardEditText源码,找到showKeyboardWindow()方法,这个方法封装了把页面顶上去的代码(我这个方法用的protected所以你使用不到)
3.当你切换EditText的时候注意调用setEditText方法将当前的eidttext设置进去

@realchen
Copy link
Author

你好,你的这个逻辑我目前还没有优化到哈,你可以这样做:
1.将我的项目源码下载下来拷贝到项目于中
2.找到KeyBoardEditText源码,找到showKeyboardWindow()方法,这个方法封装了把页面顶上去的代码(我这个方法用的protected所以你使用不到)
3.当你切换EditText的时候注意调用setEditText方法将当前的eidttext设置进去

谢谢回复,我这边试试看。
如果进入页面,一开始就点击recycleview 靠近底部的Edittext,其实是可以把页面网上顶的。
但是我手动去切换焦点,页面不会动

@Jay-huangjie
Copy link
Owner

这个好办,如果你用代码切换了焦点,然后直接在setFocusChangeListener方法中调用showKeyboardWindow方法应该就可以了

@realchen
Copy link
Author

realchen commented Mar 25, 2020

Recycleview的Adapter中

et_number.setFocusChangeListener((v, hasFocus) -> {
                                SystemKeyBoardEditText v1 = (SystemKeyBoardEditText) v;
                                if (!hasFocus) {
                                    v1.dismissKeyboardWindow();
                                } else {
                                    v1.showKeyboardWindow();
                                }
                            });

在Activity中的方法

public void compelete(int index) {
        editTexts.get(index).getEditText().clearFocus();
        //已经是最后一个
        if (index == editTexts.size() - 1) {
            LogUtils.d("compelete=========当前是最后一个");

        } else {
            LogUtils.d("compelete=========切换到一个");
            //切换到下一个Edittext
            SystemKeyBoardEditText nextEdittext = editTexts.get(index + 1).getEditText();
            nextEdittext.requestFocus();
        }
    }

我这边的逻辑是点击下一个,当前的失去焦点,下一个输入框获取焦点
最后一个输入框时,所有的都失去焦点
现在问题是,我现在最后一个下一个的时候,焦点又会跑到页面显示的第一个输入框了

PS:我这边使用的是SystemKeyboardEditText ,setEdittext这个怎么调用

@Jay-huangjie
Copy link
Owner

SystemKeyboardEditText 不需要使用setEdittext方法,焦点问题建议你再检查下代码是哪里出了问题

@realchen
Copy link
Author

SystemKeyboardEditText 不需要使用setEdittext方法,焦点问题建议你再检查下代码是哪里出了问题

而且现在当一个edittext失去焦点后,后面重新获取焦点的时候,键盘第一次输入无效,按第二次才可以把输入的内容填上,这个是什么原因呢?

@realchen
Copy link
Author

你好
showKeyboardWindow()这个里面方法你在RecycleView里使用过吗?
还是有问题

@QQabby
Copy link

QQabby commented Mar 21, 2022

我也有个小问题,RecyclerView 的item中有使用SystemKeyboardEdittext,如果手按下的刚好是那个EditText ,就会自动把键盘弹起来,但其实我想滑动RecyclerView ,这怎么处理好点?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants