相关疑难解决方法(0)

滚动RecyclerView以在顶部显示所选项目

我正在寻找一种滚动方式以RecyclerView在顶部显示所选项目的方法.

ListView我能够通过这样做,scrollTo(x,y)并获得了需要为中心元素的顶部.

就像是:

@Override
public void onItemClick(View v, int pos){
    mylistView.scrollTo(0, v.getTop());
}
Run Code Online (Sandbox Code Playgroud)

问题是RecyclerView当使用它的scrollTo方法时返回错误

RecyclerView不支持滚动到绝对位置

如何滚动a RecyclerView以将所选项目放在视图顶部?

android scroll android-recyclerview

192
推荐指数
12
解决办法
18万
查看次数

RecyclerView无法按预期滚动

我有一个项目,我使用水平回收视图,我想中心一个元素.我的实现有效,但不是在每种情况下都可以在这里检查这个GIF:

你可能会注意到,如果我从左边来,它会正确滚动.如果我来自右边它会过度滚动,我不知道如何停止或如何解决这个问题.

我在这里将代码条带化为此示例:

public class DemoActivity extends ActionBarActivity implements View.OnClickListener {
    private static final int JUMP_TO_LEFT = MyAdapter.NON_VISIBLE_ITEMS + MyAdapter.VISIBLE_ITEMS - 1;
    private static final int JUMP_TO_RIGHT = MyAdapter.NON_VISIBLE_ITEMS;
    private LinearLayoutManager mLayoutManager;
    private RecyclerView mRecycler;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_demo);
        findViewById(android.R.id.button1).setOnClickListener(this);
        mRecycler = (RecyclerView)findViewById(R.id.recycler);
        MyAdapter mAdapter = new MyAdapter();
        mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
        mRecycler.setLayoutManager(mLayoutManager);
        mRecycler.setHasFixedSize(true);
        mRecycler.scrollToPosition(MyAdapter.NON_VISIBLE_ITEMS);
        mRecycler.setAdapter(mAdapter);
    }

    @Override
    public void onClick(View v) {
        int pos = mLayoutManager.findFirstVisibleItemPosition();
        int outer = (MyAdapter.VISIBLE_ITEMS - 1) / …
Run Code Online (Sandbox Code Playgroud)

android smooth-scrolling android-animation android-recyclerview

28
推荐指数
2
解决办法
3万
查看次数

如何使用RecyclerView.scrollToPosition()将位置移动到当前视图的顶部?

RecyclerView.scrollToPosition()是非常奇怪的.例如,假设一个RecyclerView名字"rv".

  1. 如果现在项目10在当前RecyclerView,呼叫rv.scrollToPosition(10),RecyclerView则将项目10滚动到底部.

  2. 如果现在项目10在当前RecyclerView,呼叫rv.scrollToPosition(10),将不会有任何滚动,将不会做任何事情.

  3. 如果现在项目10位于当前的顶部,则RecyclerView调用rv.scrollToPosition(10),RecyclerView将项目10滚动到顶部.

为了帮助理解,请看这张照片 在此输入图像描述

但我需要的是,每当我调用它时,RecyclerView就会像案例3一样将所谓的位置滚动到当前视图的顶部.如何做到这一点?

android scroll android-recyclerview

26
推荐指数
4
解决办法
7万
查看次数

RecyclerView smoothScroll位于中心位置.安卓

我正在使用水平布局管理器RecyclerView.我需要以下RecyclerView一种方式制作:当点击某个项目时 - 将smoothScrool放到该位置并将该项目放在中心RecyclerView(如果可能的话,例如20中的10项).

所以,我没有问题smoothScrollToPosition(),但如何把项目放在RecyclerView??? 的中心?

谢谢!

android android-recyclerview linearlayoutmanager

24
推荐指数
3
解决办法
2万
查看次数

将新项目添加到RecyclerView的顶部

我正在以编程方式向recyclerview位置0添加一个项目

public void addQuestion(Question question){
    this.questionList.add(0, question);
    notifyItemInserted(0);
}
Run Code Online (Sandbox Code Playgroud)

这项工作非常好,项目确实出现在顶部的列表中,但用户必须向上滚动才能看到新项目.

是否有任何技巧如何项目出现在顶部,Recyclerview自动滚动?

android scroll add android-recyclerview

16
推荐指数
1
解决办法
1万
查看次数

Android RecyclerView平滑滚动以查看其动画高度

我有一个带有可扩展子视图的RecyclerView,当单击子ViewGroup时,它会将ViewGroup高度从0调整为测量视图组高度的视图数量膨胀,如下面的gif所示:

例

问题是:我在recyclerView上调用smoothScrollToPosition,它平滑滚动到视图位置,但是在上面的gif中我认为当前的视图高度仍然没有展开,我正在回收在recyclerview的视图下面,由于视图已经可见,因此不会滚动到位置,但是当我再次触摸(再次调用smoothscrolltoposition)时,它会将视图滚动到正确的位置,因为视图已经展开.

有没有办法将视图滚动到屏幕顶部或只是滚动以使内容可见?

对于引用:这是调用以扩展视图的方法:

collapsible_content.removeAllViews();
for(int i = 0; i < 5; i++) {
        View link_view = getLayoutInflater().inflate(R.layout.list_item_timeline_step_link, collapsible_content, false);
        TextView text = (TextView) link_view.findViewById(R.id.step_link_text);
        text.setText("Test");
        collapsible_content.addView(link_view);
    }
Run Code Online (Sandbox Code Playgroud)

这是我扩展的方法:

public void toggle() {
        collapsible_content.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        Animation a;
        if (mExpanded) {
            a = new ExpandAnimation(collapsible_content.getLayoutParams().height, 0);
        } else {
            a = new ExpandAnimation(collapsible_content.getLayoutParams().height, getMeasuredHeight());
        }
        a.setDuration(mAnimationDuration);
        collapsible_content.startAnimation(a);
        mExpanded = !mExpanded;
    }
Run Code Online (Sandbox Code Playgroud)

和动画:

private class ExpandAnimation extends Animation {
        private final int mStartHeight;
        private final int mDeltaHeight;

        public ExpandAnimation(int startHeight, int endHeight) …
Run Code Online (Sandbox Code Playgroud)

java android android-animation android-scroll android-recyclerview

8
推荐指数
1
解决办法
2万
查看次数

RecyclerView - 跳转到位置,然后平滑滚动到顶部

我有一个包含50多件物品的RecyclerView.每个项目都包含一个图像(和文本)并填满大部分屏幕.我打电话recyclerView.smoothScrollToPosition(0),但动画需要超过3秒.

如果我打电话recyclerView.scrollToPosition(10),然后recyclerView.smoothScrollToPosition(0)RecyclerView从底部滚动到顶部(忽略"跳转"到位置10的请求).

有什么办法我可以在打电话之前等待"跳" smoothScrollToPosition吗?

android android-recyclerview

6
推荐指数
1
解决办法
2869
查看次数

LinearLayoutManager的scrollToPositionWithOffset具有平滑的动画?

我正在使用 RecyclerView,我希望将单击的项目滚动到 RecyclerView 的顶部。我尝试了 RecyclerView 中的平滑滚动方法,但没有一个按我的预期工作。

唯一有效的是 LinearLayoutManager 中的scrollToPositionWithOffset,但没有流畅的动画:项目直接跳转到顶部。

有没有办法让这个scrollToPositionWithOffset方法实现平滑的动画?

android android-recyclerview linearlayoutmanager

6
推荐指数
0
解决办法
3991
查看次数