我有recycleView活动,其中包括一些编辑文本。当选择任何弹出窗口的编辑文本键盘时。但是,当我将回收视图移动到向上的键盘时,将其更改为默认键盘。
我发现这样做的原因是,当编辑文本消失时,它会从回收视图中删除,因此失去了焦点。然后键盘更改为默认值。
现在,当移动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()
}
之后,您可以在片段/活动中实现回调方法以隐藏键盘
希望对你有帮助
关于android - 询问建议-回调功能可在向上或向下移动时编辑文本失去焦点时回收 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56783789/