下面列出了androidx.recyclerview.widget.RecyclerView#smoothScrollToPosition ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static void scrollToTop(RecyclerView recyclerView) {
RecyclerView.LayoutManager manager = recyclerView.getLayoutManager();
int firstVisibleItemPosition = 0;
if (manager instanceof LinearLayoutManager) {
firstVisibleItemPosition = getFirstVisibleItemPosition((LinearLayoutManager) manager);
} else if (manager instanceof StaggeredGridLayoutManager) {
firstVisibleItemPosition = getFirstVisibleItemPosition((StaggeredGridLayoutManager) manager);
}
if (firstVisibleItemPosition > 5) {
recyclerView.scrollToPosition(5);
}
recyclerView.smoothScrollToPosition(0);
MysplashActivity activity = MysplashApplication.getInstance().getTopActivity();
if (activity != null) {
ComponentFactory.getSettingsService().notifySetBackToTop(activity);
}
}
@Override public void scrollToTop() {
RecyclerView list;
if (followedStoresResultList.getVisibility() == View.VISIBLE) {
list = followedStoresResultList;
} else {
list = allStoresResultList;
}
LinearLayoutManager layoutManager = ((LinearLayoutManager) list.getLayoutManager());
int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();
if (lastVisibleItemPosition > 10) {
list.scrollToPosition(10);
}
list.smoothScrollToPosition(0);
}
@Override @UiThread public void scrollToTop() {
RecyclerView view = getRecyclerView();
LinearLayoutManager layoutManager = ((LinearLayoutManager) view.getLayoutManager());
int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition();
if (lastVisibleItemPosition > 10) {
view.scrollToPosition(10);
}
view.smoothScrollToPosition(0);
}
@Config(shadows = ShadowRecyclerView.class)
@Test
public void testScrollToTop() {
verify(userManager).getUser(eq("username"), userCaptor.capture());
userCaptor.getValue().onResponse(user);
RecyclerView recyclerView = (RecyclerView) activity.findViewById(R.id.recycler_view);
recyclerView.smoothScrollToPosition(1);
assertThat(customShadowOf(recyclerView).getScrollPosition()).isEqualTo(1);
TabLayout.Tab tab = ((TabLayout) activity.findViewById(R.id.tab_layout)).getTabAt(0);
tab.select();
tab.select();
assertThat(customShadowOf(recyclerView).getScrollPosition()).isEqualTo(0);
}
@Override
public void perform(UiController uiController, View view) {
RecyclerView recyclerView = (RecyclerView) view;
recyclerView.smoothScrollToPosition(position);
}
@Config(shadows = ShadowRecyclerView.class)
@Test
public void testScrollToTop() {
Intent intent = new Intent();
intent.putExtra(ItemActivity.EXTRA_ITEM, new TestItem() {
@NonNull
@Override
public String getType() {
return STORY_TYPE;
}
@Override
public String getId() {
return "1";
}
@Override
public boolean isStoryType() {
return true;
}
@Override
public int getKidCount() {
return 10;
}
@Override
public String getUrl() {
return "http://example.com";
}
});
controller = Robolectric.buildActivity(ItemActivity.class, intent);
controller.create().start().resume();
activity = controller.get();
// see https://github.com/robolectric/robolectric/issues/1326
ShadowLooper.pauseMainLooper();
controller.visible();
ShadowApplication.getInstance().getForegroundThreadScheduler().advanceToLastPostedRunnable();
RecyclerView recyclerView = activity.findViewById(R.id.recycler_view);
recyclerView.smoothScrollToPosition(1);
assertThat(customShadowOf(recyclerView).getScrollPosition()).isEqualTo(1);
TabLayout tabLayout = activity.findViewById(R.id.tab_layout);
assertThat(tabLayout.getTabCount()).isEqualTo(2);
tabLayout.getTabAt(1).select();
tabLayout.getTabAt(0).select();
tabLayout.getTabAt(0).select();
assertThat(customShadowOf(recyclerView).getScrollPosition()).isEqualTo(0);
}