RecyclerView行为 - 当键盘打开/关闭时变为空

10

我使用来自v7RecyclerViewSearchViewFilterable类来实现了一个控件。现在有一个让人烦恼的问题,每当键盘打开或关闭时,RecyclerView的内容就会消失。计数仍然正确,但是视图为空。我猜测这可能与Layout大小的改变有关。这种情况正常吗?是否有问题?如何处理?我可以展示代码,但不确定哪一部分是相关的,请告诉我该添加什么?

2个回答

19

在输入问题时,从类似的问题中找到了这篇文章

请在清单文件的活动中添加以下一行。希望它可以解决问题。android:windowSoftInputMode="adjustPan"

更确切地说,在键盘将要打开的activity标签中的AndroidManifest.xml中添加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 告诉键盘覆盖活动视图而不干扰其内容。如果不使用该选项,则在打开键盘时,活动的大小也会发生变化,这会使内容消失,因为在隐式操作期间和之后没有调用notifyDatasetChanged()


0

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

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

1
设置 SOFT_INPUT_ADJUST_RESIZE 会改变活动大小,这将导致活动的重新创建(除非使用 android:configChanges =“screenSize” 手动处理)。您必须在 onCreate 中保存活动状态并进行保留。 - priyank

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接