我有 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/