RecyclerView 行为 - 当键盘为 opened/closed 时变为空

RecyclerView behavior - Goes empty when keyboard is opened/closed

我用 SearchViewFilterable 实现了 RecyclerView;来自 v7 的所有 类。现在有这种行为很烦人。每当打开或关闭键盘时,RecyclerView 的内容就会变为空白。计数仍然正确,但视图是空的。我的猜测,这与 Layout 尺寸变化有关。这种行为是正常的还是出了什么问题?如何处理?我可以展示代码,但不太清楚哪一部分是相关的,所以请告诉我我可以在此处添加什么?

在输入问题时,从类似问题中找到 this

Please add following line to your activity in manifest. Hope it works. android:windowSoftInputMode="adjustPan"

更准确地说,在 AndroidMenifest.xml 中要打开键盘的 activity 标签中添加 android:windowSoftInputMode="adjustPan"

示例:

<activity
        android:name=".FManagerActivity"
        android:label="@string/app_name"
        android:windowSoftInputMode="adjustPan"
        android:theme="@style/AppTheme.Light.NoActionBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

这基本上是 activity 在键盘打开或关闭时做出反应的行为。 adjustPan 告诉键盘覆盖 activity 的视图而不打扰它的内容。否则,当打开键盘时,activity 的大小也会发生变化,这会使内容消失,因为在隐式操作期间和之后不会调用 notifyDatasetChanged()

不太确定为什么,但将其设置为 SOFT_INPUT_ADJUST_RESIZE 为我解决了这个问题:

activity?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)