废话不说,直入正题。笔者往常一样做着需求
此时我的需求如图
image.png
很简单是不是
image.png
然后笔者就跑起来了
但是发现了一个问题。recycleview中的edittext在获取焦点后,短暂弹起软键盘然后又消失了,同时焦点又丢失了。
!!!这是这么回事,我试了一下普通的edittext。没事,奇了怪了,那咋办?
我第一个反应,修改activity的softinputmode
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);//解决软键盘不能将edittext顶上去的bug。
但是很多时候,就是需要这样设置的。不能因为修改对话框的表现而修改activity的整个风格。
于是我就想别的办法。
我后面灵机一动 recycleview的edittext和普通的edittext表现不同的原因。肯定是软键盘顶起后,recycleview重绘。那么刚才获取的焦点就没有了。此时本帅比好像看到了胜利的钥匙。直接给rv嵌套个爸爸scrollview不就行了?!!!
果然,神奇的一幕出现了,正常弹出软键盘。
正当笔者沉迷于成功的喜悦的时候。
我对item进行了一下删除操作。呵呵哒,直接嗝屁了。
主体报错了这个玩意parameter must be a descendant of this view
好吧。我网上一查,原来是edittext获取焦点时在scrollview的冲突问题。
那怎么办吗,把焦点清除不就行了么?没错,正是如此。刚开始,我尝试清除删除的item的当前edittext的值。
但是,这样删除下面的item,还是会报错。于是乎,我直接好家伙。清空rv的焦点!。一试,完美解决。
holder.getView(R.id.iv_del).setOnClickListener( v -> {
rv.clearFocus();
ViewUtil.removeItem(listW, this, position);
});
就是辣么轻松。
这个坑说大不大,说小不小。有群友那个时候让我用addview实现。但是我之前的rv其他布局使用过,还是想复用。嘻嘻
,给大家排个坑,我这样大部分基于猜想,和实践,如有谬误,大家多多指教。
网友评论