我已经使用GridLayoutManager实现了一个RecyclerView,它同时具有Vertical和Horizontal Scroll,我需要将布局滚动到特定的位置,引用很多代码,但它对我来说没有用。
Java类代码:
void RackGen()
{
STRarray = (String[]) mStringList.toArray(new String[mStringList.size()]);
ROWarray = (String[]) mRowList.toArray(new String[mRowList.size()]);
numcol = Integer.parseInt(col);
numdata = Integer.parseInt(num);
rv = (RecyclerView) findViewById(R.id.rview);
int numberOfColumns = numcol;
GridLayoutManager GM2 = new GridLayoutManager(this,numberOfColumns);
rv.setLayoutManager(GM2);
rv.setNestedScrollingEnabled(true);
rv.setHasFixedSize(true);
adapter = new MyRecyclerViewAdapter(this, STRarray, ROWarray);
rv.setAdapter(adapter);
XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="20dp"
android:layout_centerHorizontal="true"
android:id="@+id/llzoom"
android:orientation="vertical"
>
<android.support.v4.widget.NestedScrollView
android:id="@+id/nested_scroll_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android">
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scrollbars="none"
android:overScrollMode="never">
<android.support.v7.widget.RecyclerView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rview">
</android.support.v7.widget.RecyclerView>
</HorizontalScrollView>
</ScrollView>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
只有在添加嵌套滚动视图以及垂直和水平滚动后,滚动才能在两个方向上平滑地进行。 现在我需要滚动到特定位置。
谢谢
答案 0 :(得分:0)
您需要在活动中引用 NestedScrollView ,然后在该对象上调用scrollTo(x,y)
,例如:
NestedScrollView nestedScrollView = (NestedScrollView) findViewById(R.id.nested_scroll_view);
nestedScrollView.scrollTo(x,y);
x和y是水平和垂直滚动。
答案 1 :(得分:0)
我知道这是一篇较旧的文章,并且我还没有在嵌套滚动视图中测试过此代码,但是由于您只有一个位置值,因此可以尝试使用此技术。
这非常适合滚动到具有动态自动调整功能的recyclerview GridLayoutManager的当前选定视图(我将自定义recyclerview用于自动调整,而不是网格本身)。
设置适配器后:
recyclerView.setAdapter(adapter);
我把它放在onCreate的下面:
recyclerView.post(new Runnable()
{
@Override
public void run()
{
layoutManager.scrollToPositionWithOffset(currentSelected, 0);
}
});
它等待绘制视图,然后滚动到给定的位置。效果很好!