UI问题
1. RecyclerView被软键盘挤兑解决
- 对于RecyclerView中调用notifyItemRangeChanged(Int,Int)刷新局部数据项出现问题的解析
方法解释:notifyItemRangeChanged(first,count)------->刷新从当前item起,数量为count个的子项(每个子项重新调用onBindViewHolder()去更新显示。)。注意:他会包含当前的这一条,所以刷新全局的话,记得算上开始的那一个。 正常流程:调用了对应的方法findFirstVisibleItemPosition()寻找当前界面中第一个可见的子项,并返回其position,同时调用findLastVisibleItemPosition()寻找当前界面最后一个可见子项并返回其position,(注意这两个方法只可以用RecyclerView.layoutManager调用,同时这时候的layoutManager必须为LinearLayoutManager)然后,传参进入对应的notifyItemRangeChanged,此时会根据传入进来的消息更新对应的子项。 问题:在响应输入字段,并输入字段查询后更新RecyclerView中的内容时出现无法全部更新想要的字段。 对应原因:因为当点击对应项进行数据输入的时候,会调用软键盘,此时会挤压当前的RecyclerView,导致得到的值不正确,当软键盘下去后,对应的更新就非常奇怪。 解决方法:在持有本RecyclerView的Activity中添加一条语句如下: android:windowSoftInputMode="stateHidden|adjustPan,对应的放置如下。<activity
android:name=".ui.MainActivity"
android:exported="true"
android:windowSoftInputMode="stateHidden|adjustPan"><!-- 用于软件挤兑fragment的处理-->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
|