我有一些奇怪的问题,现在就注意到了。我有ViewPager
有3个片段,使用相同的布局RecyclerView
,它适用于我测试的4个设备(Nexus 7,HTC 816,HTC 610和Xperia SP),但它不适用于Nexus S 。
滚动仅在最后一个片段上正常工作,但在前两个片段中,您需要从列表的顶部或底部开始滚动。
这是使用的布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_dictionary"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:scrollbars="vertical"
android:clickable="true"
android:background="@color/myLightPrimaryColor"
xmlns:android="http://schemas.android.com/apk/res/android" />
此处只有代码差异:
(这个不起作用)
@Override
protected void updateDisplay() {
// get new word count
newWords = SharedPrefsHelper.getDictionaryCountDifference(getActivity());
adapter = new DictionaryAdapter(listDictionary, getActivity(), newWords);
recyclerView.setAdapter(adapter);
}
(这一个)
@Override
protected void updateDisplay() {
// sort words by best voted (upvote - downvote)
Comparator<Dictionary> comparator = new Comparator<Dictionary>() {
@Override
public int compare(Dictionary lhs, Dictionary rhs) {
int leftLike, leftDislike, rightLike, rightDislike;
if (lhs.getLikes() == null)
leftLike = 0;
else leftLike = Integer.parseInt(lhs.getLikes());
if (lhs.getDislikes() == null)
leftDislike = 0;
else leftDislike = Integer.parseInt(lhs.getDislikes());
if (rhs.getLikes() == null)
rightLike = 0;
else rightLike = Integer.parseInt(rhs.getLikes());
if (rhs.getDislikes() == null)
rightDislike = 0;
else rightDislike = Integer.parseInt(rhs.getDislikes());
return (rightLike - rightDislike) - (leftLike - leftDislike);
}
};
Collections.sort(listDictionary, comparator);
adapter = new DictionaryAdapter(listDictionary, getActivity());
recyclerView.setAdapter(adapter);
我不明白为什么这部分代码会有所作为。
答案 0 :(得分:1)
好像我没有在正确的地方观看来解决这个问题。ViewPager
动画导致了问题,这个问题具体来说:
pager.setPageTransformer(true, new DepthPageTransformer());
这是来自https://github.com/ToxicBakery/ViewPagerTransforms的动画,但其他动作(没有测试所有动画)。它并没有在任何4.1 Android设备上运行,再尝试了一个和模拟器。