安卓recyclerview v.23.2.0和design library v.23.2.0存在问题

31
更新到v23.2.0后,RecyclerView的项表现出奇怪的行为:非常大且有空白间隙。更新到设计库23.2.0后,菜单溢出图标变为黑色(应用具有深色操作栏)。
更新: 在我的Nexus 5上,溢出图标和RecyclerView行已经修复,但在Galaxy Tab 4上,溢出图标仍然是黑色。
更新2: 如果您遇到空白间隙问题,请修复视图的布局参数(match_parent->wrap_content),因为RecyclerView现在将根据其内容的大小调整自身大小。 阅读此博客 http://android-developers.blogspot.am/2016/02/android-support-library-232.html RecyclerView小部件提供了一个高级和灵活的基础来创建列表和网格,同时支持动画。此版本为LayoutManager API带来了一个令人兴奋的新功能:自动测量!这使得RecyclerView可以根据其内容的大小调整自身大小。这意味着以前不可用的场景,例如使用WRAP_CONTENT作为RecyclerView的维度,现在是可能的。您会发现所有内置的LayoutManager现在都支持自动测量。
由于这个改变,请确保双重检查您的项目视图的布局参数:以前被忽略的布局参数(如滚动方向上的MATCH_PARENT)现在将被完全尊重。 更新3 链接到描述操作栏中黑色图标问题的问题 Issue 201918 更新4 请参见我的帖子下面的答案,图标问题也已解决。

请添加一些屏幕截图并详细说明,因为在我们这边它的表现符合预期。 - Dhaval Parmar
@android_dev:是的,有问题。目前的解决方案是https://dev59.com/jl4b5IYBdhLWcg3w1UzL#28631979,我们会找到合适的解决方案并尽快更新给你。 - Dhaval Parmar
对于溢出菜单,请参考以下链接:http://stackoverflow.com/a/32108151/1168654 - Dhaval Parmar
3
我也遇到了问题...在23.2版本中,工具栏中的返回箭头变成了黑色,并且其中一个选项卡布局没有显示选项卡名称... - Pavel Biryukov
1
它已经在23.2.1中得到修复。我们不再需要设置**vectorDrawables.useSupportLibrary = true**。 - hata
显示剩余8条评论
2个回答

20
你看到大面积空白的原因是由于使用了match_parent。在之前,它无法正常工作,但是现在新版本已经可以正常工作了。你只需要将其更新为wrap_content,因为这会使布局与父容器匹配,从而导致出现大面积空白。
RecyclerView小部件提供了创建列表和网格以及支持动画的高级和灵活的基础。此版本为LayoutManager API带来了一个令人兴奋的新功能:自动测量!这使得RecyclerView可以根据其内容的大小调整自身大小。这意味着以前不可用的情况(例如对RecyclerView的尺寸使用WRAP_CONTENT)现在变得可能。你会发现所有内置的LayoutManager现在都支持自动测量。

http://android-developers.blogspot.co.uk/2016/02/android-support-library-232.html


1
谢谢提供信息,我已经修复了。请看我在原问题下的评论 :) - android_dev
1
我也遇到了这个问题。看起来是在23.1.1中修复的一个错误又出现了。希望Google尽快更新这些库。 - James Britton
我也遇到了RecyclerView滚动的问题。通过使用recyclerView.setNestedScrollingEnabled(false)解决了这个问题。 - mixel
我想指出的是,我必须在RecyclerView的项布局上使用wrap_content,而不是在RecyclerView本身上使用。这解决了我的问题。 - Radoslav Yordanov
@RadoslavYordanov,这就是我最初所指的,而不是RecyclerView本身。 - James Britton
显示剩余3条评论

1
似乎需要使用两个新库,即support-vector-drawable和support-animated-vector-drawable,因为appcompat-v7使用矢量图形(问题讨论)。只需使用以下内容更新您的build.gradle文件以添加对矢量图形的支持,黑色图标的问题将得到解决。请保留HTML标签。

build.gradle

根据您的Gradle插件版本,将以下行添加到您的构建gradle中

// Gradle Plugin 2.0+

 android {  
   defaultConfig {  
     vectorDrawables.useSupportLibrary = true  
    }  
 }   

// Gradle插件1.5

 android {  
   defaultConfig {  
     generatedDensities = []  
  }  

  // This is handled for you by the 2.0+ Gradle Plugin  
  aaptOptions {  
    additionalParameters "--no-version-vectors"  
  }  
 } 

更新 对于使用AppCompat的用户来说,23.2 博客文章中描述的启用支持矢量图标的标志在使用AppCompat 23.2.1时不再需要。但是,如果您希望为自己的资源使用支持矢量图标,则仍然可以利用app:srcCompat属性。


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