我正在使用默认的RecyclerView快速滚动,我按照本指南来支持它.
现在,问题是拇指根据数据集的大小调整其高度.对于100以上的大件物品,拇指变得非常小,几乎难以对拖动作出反应.
请问有什么方法可以为快速滚动拇指设置最小高度.
我有一个非常标准RecyclerView的垂直LinearLayoutManager.我一直在顶部插入新物品,我正在打电话notifyItemInserted(0).
我希望列表保持滚动到顶部 ; 始终显示第0个位置.
从我的要求来看,LayoutManager根据项目数量的不同表现.
虽然所有项目都适合屏幕,但它的外观和行为与我预期的一样:新项目始终显示在顶部,并将所有项目都移到它下面.
但是,一旦没有.项目超出RecyclerView的范围,新项目将添加到当前可见项目之上,但可见项目仍保留在视图中.用户必须滚动才能看到最新的项目.
对于许多应用程序来说,这种行为是完全可以理解的,但不适用于"实时馈送",其中看到最近的事情比使用自动滚动"不分散"用户更重要.
我知道这个问题几乎与在RecyclerView的顶部添加新项目相同 ......但是所有建议的答案都只是解决方法(大多数都非常好,不可否认).
我正在寻找一种方法来实际改变这种行为.我希望LayoutManager的行为完全相同,无论项目数量多少.我希望它总是移动所有项目(就像它为前几个添加项目所做的那样),而不是停止在某些时候移动项目,并通过平滑滚动列表到顶部进行补偿.
基本上,不smoothScrollToPosition,不RecyclerView.SmoothScroller.子类化LinearLayoutManager很好.我已经挖掘了它的代码,但到目前为止没有任何运气,所以我决定询问以防有人已经处理过这个问题.谢谢你的任何想法!
编辑:澄清为什么我从相关问题中驳回答案:主要是我关注动画的平滑性.
请注意,在第一个GIF中,ItemAnimator在添加新项目的同时移动其他项目,淡入和移动动画都具有相同的持续时间.但是当我通过平滑滚动"移动"项目时,我无法轻易控制滚动的速度.即使使用默认ItemAnimator持续时间,这看起来也不太好,但在我的特定情况下,我甚至需要减慢ItemAnimator持续时间,这会使情况变得更糟:
我想在回收站视图中为每个项目设置不同的高度。通常我们每行都得到相同的高度。但是我需要不同的高度,例如,如果前三行的高度为 70,那么我需要其余的高度为 0。我的代码如下。在这段代码中,它没有正确设置。请建议我编辑
public class MainActivity extends AppCompatActivity {
private RecyclerView rvListProfiles;
private ListProfileAdapter listProfileAdapter;
private String[] list = new String[]{"ABC","DEF","GHI","JKL","MNO"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rvListProfiles = findViewById(R.id.rvListProfiles);
listProfileAdapter = new ListProfileAdapter(list, this);
RecyclerView.LayoutManager mLayoutManager = new
LinearLayoutManager(getApplicationContext());
rvListProfiles.setLayoutManager(mLayoutManager);
rvListProfiles.setItemAnimator(new DefaultItemAnimator());
rvListProfiles.setAdapter(listProfileAdapter);
String listString = Arrays.toString(list);
System.out.println("List "+listString);
}
}
Run Code Online (Sandbox Code Playgroud)
项目xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="70dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@android:color/darker_gray"
android:padding="10dp"
android:id="@+id/parentLayout">
<ImageView
android:id="@+id/profileImage"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:src="@mipmap/love"
android:transitionName="imageTransition" />
<TextView
android:id="@+id/profileName"
android:layout_width="wrap_content"
android:layout_height="wrap_content" …Run Code Online (Sandbox Code Playgroud)