RecyclerView 行为 - 当键盘为 opened/closed 时变为空
RecyclerView behavior - Goes empty when keyboard is opened/closed
我用 SearchView
和 Filterable
实现了 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)
我用 SearchView
和 Filterable
实现了 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)