android - 询问建议 - 编辑文本上下移动时失去焦点时回收 View 的回调函数

标签 android android-recyclerview android-edittext

我有 recycleView 的 Activity ,其中包括一些编辑文本。当选择任何编辑文本键盘获取弹出窗口时。但是,当我将回收 View 移动到向上键盘时,键盘会更改为默认键盘。

我找到了它的原因,当编辑文本消失时,它从回收 View 中删除,因此它失去了焦点。然后键盘更改为默认

现在,当移动 recycleview 时没有任何编辑文本的焦点时,我需要关闭键盘。但是当没有编辑文本的焦点时,我不知道如何获得这种回调。

最佳答案

我想向您推荐一种名为 onViewDetachedFromWindow 的 recyclerView 方法。 例如,当您滚动 recyclerView 时,项目变得不可见,此时适配器调用:

override fun onViewDetachedFromWindow(holder: RecyclerView.ViewHolder) {
        super.onViewAttachedToWindow(holder)
        if (holder is MyViewHolder) {
            holder.checkForFocus()
        }
}

在 viewHolder 之后你可以检查焦点:

inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        fun bind(item: MyViewItem) {
            itemView.editText.hint = item.title
        }

        fun checkForFocus() {
            if(itemView.editText.hasFocus()){
                callback.hideKeyBoard()
            }
        }
    }
}

var callback: IKeyBoard? = null // initialize it in fragment/activity


interface IKeyBoard {
        fun hideKeyBoard()
}

之后可以在fragment/activity中实现隐藏键盘的回调方法

希望对你有帮助

关于android - 询问建议 - 编辑文本上下移动时失去焦点时回收 View 的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56783789/

相关文章:

Android 样式资源编译 (aapt) 失败 : Bad resource table: header size 0xc

android - 回收者 View 的项目触摸监听器

隐藏的Android EditText

android - 使用阿拉伯语在 Android 中编辑文本问题

javascript - 在 Slack 消息中格式化电话号码?

android - 当设备的方向改变时动态膨胀行但奇怪的行为

java - RecyclerView 将未选定的项目标记为已选定

android - 如何获取动态添加的多个EditText的ID?

android - 如果用户使用旧版本的 Google Play 服务,使用新版本的 Google Play 服务的功能会使应用程序崩溃吗?

android - 如何从 RecyclerView 保存更改的数据并上传更改