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

10-10 01:56