Android Studio 致命的lint错误:为什么使用recyclerView.setHasFixedSize(true)和wrap_content作为滚动方向的大小会导致致命的lint错误?

368yc8dk  于 2023-01-31  发布在  Android
关注(0)|答案(3)|浏览(232)

当尝试生成一个签名的APK发布。我发现以下错误。

此错误仅发生在我将我的Android Studio更新到4.1.3后。

检查时,我发现recyclerView.setHasFixedSize(true)如果与wrap_content一起用于滚动方向的大小,会产生致命的lint错误。我已经通过在所有活动中删除该行来解决它,但我仍然需要知道为什么这个错误现在是致命的,更新前没有这样的错误。

mgdq6dx1

mgdq6dx11#

这个错误是基于RecyclerView的高度,而不是里面的项目。我注意到这个错误没有显示在我的任何视图绑定RecyclerView中,但是显示在我的findById recyclerView中,即使高度是match_parent。这表明lint并不聪明。如果你的项目中有任何RecyclerView使用wrap_content,并且与其他recyclerView具有相同的id,lint会感到困惑,并会抱怨。即使其他布局在其RecyclerView中都使用match_parent。
我的修复方法是重命名一个导致问题的RecyclerView的id(一个对话框内的RecyclerView,因此有必要在其中使用wrap_content)

ogq8wdun

ogq8wdun2#

请参考这个问题,你会知道它背后的原因。2这个问题已经以某种形式问过了。
Understanding RecyclerView setHasFixedSize

55ooxyrt

55ooxyrt3#

我认为这个错误纯属无稽之谈。
我只是将其作为方法注解来隐藏:

@SuppressWarnings("InvalidSetHasFixedSize")

或者像这样的抑制注解:

//noinspection InvalidSetHasFixedSize
myRecyclerView.setHasFixedSize(true);

source
我不认为调整回收视图以适应内容有什么意义,我也绝对肯定我的视图没有。Lint吐出这些警告几乎是一种侮辱(同样是一个“致命错误”)。

相关问题