android 回收站设计,android-回收站视图项目将支持库从“ 23.1.1”升级到“ 23.2.1”后填满了整个回收站视图的高度...

以前,我正在使用以下旧的支持库“ 23.1.1”。

compile 'com.android.support:appcompat-v7:23.1.1'

compile 'com.android.support:support-v4:23.1.1'

compile 'com.android.support:preference-v7:23.1.1'

compile 'com.android.support:preference-v14:23.1.1'

compile 'com.android.support:design:23.1.1'

compile 'com.android.support:recyclerview-v7:23.1.1'

效果很好。 这是我的LinearLayout.LayoutParams.WRAP_CONTENT的样子

MlscZ.png

现在,由于已完成一些错误修复,我希望迁移到“ 23.2.1”。

compile 'com.android.support:appcompat-v7:23.2.1'

compile 'com.android.support:support-v4:23.2.1'

compile 'com.android.support:preference-v7:23.2.1'

compile 'com.android.support:preference-v14:23.2.1'

compile 'com.android.support:design:23.2.1'

compile 'com.android.support:recyclerview-v7:23.2.1'

但是,突然之间,我所有的LinearLayout.LayoutParams.WRAP_CONTENT物品似乎都填满了normalLayoutParams的整个高度。

qRf6U.png

XWgoB.png

这是我的布局文件的代码片段:[https://gist.github.com/yccheok/241a0d38d56305a1be24d09b54eb1600]

真正令我困惑的是,尽管我在回收者视图项目的布局中使用了LinearLayout.LayoutParams.WRAP_CONTENT,但它无法按预期工作。

我没有为LinearLayout.LayoutParams.WRAP_CONTENT使用任何自定义布局管理器。

从[http://developer.android.com/tools/support-library/index.html],我意识到23.2.1这次对LinearLayout.LayoutParams.WRAP_CONTENT进行了很多更改。

修复了与各种度量规范方法有关的错误。 (问题201856)

缩短了锁定周期,在该锁定周期中LinearLayout.LayoutParams.WRAP_CONTENT在计算布局或滚动时不允许更改适配器。 (问题202046)

修复了在看不见的项目上调用LinearLayout.LayoutParams.WRAP_CONTENT时崩溃的问题。 (问题202136)

修复了当LinearLayout.LayoutParams.WRAP_CONTENT在同一测量通道中添加和删除视图时发生的崩溃。 (问题193958)

我最怀疑的是[https://code.google.com/p/android/issues/detail?id=201856],因为它涉及更改各种度量标准的方法

到目前为止,我尝试使用一个简单的LinearLayout.LayoutParams.WRAP_CONTENT项目(使用23.2.1,但失败了)重现该问题! 它没有“项目填满normalLayoutParams整个高度”的问题。 我的猜测是,我的简单项目无法模拟生产项目的复杂布局结构。 我的生产项目具有以下布局

调试几个小时后,我仍然找不到此类问题的根本原因,有任何提示吗?

谢谢。

我尝试过的

我曾尝试更改LinearLayout.LayoutParams.WRAP_CONTENT

android:id="@+id/recycler_view"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:id="@+id/recycler_view"

android:layout_width="match_parent"

android:layout_height="wrap_content"

最初看起来不错。 但是,当您执行滚动时,事情无法按预期进行:[https://www.youtube.com/watch?v=U2EChFn6WkI]

更新:我终于找出了根本原因

是我这边的错误! 由于我需要为最后一行添加不同的边距,因此这是我的适配器代码。

@Override

public void onBindViewHolder(ViewHolder holder, int position) {

final List transactionSummaries = buyArray.transactionSummaries;

if (position == transactionSummaries.size() - 1) {

holder.itemView.setLayoutParams(lastLayoutParams);

} else {

holder.itemView.setLayoutParams(normalLayoutParams);

}

不幸的是,LinearLayout.LayoutParams.WRAP_CONTENT和normalLayoutParams被初始化为

normalLayoutParams = new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.MATCH_PARENT

);

lastLayoutParams = new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.MATCH_PARENT

);

使用LinearLayout.LayoutParams.WRAP_CONTENT解决了问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值