Android-调整视图大小时维护recylerview选定的项目

时间:2018-08-13 13:43:10

标签: android

我在一个活动中有两个FrameLayouts。第一个包含recylerview或listview,第二个包含根据情况的不同控件。

当控件添加到第二个帧布局中时,我想使recylerview中的选定项目对用户可见。

当选择一个项目时,我在recylerview布局管理器上使用scrollToPosition,但这是在新控件在屏幕上可见之前调用的,因此recylerview中的所选项目可以不在屏幕上。

有人知道我如何实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

在大多数情况下,我设法使此工作正常进行。在onCreateView中使用以下代码。希望这对其他人有帮助

view.addOnLayoutChangeListener(new View.OnLayoutChangeListener()
    {
        @Override
        public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom)
        {
            if ((bottom < oldBottom) && currentlyPlayingFile != null && currentlyPlayingFilePos != -1)
            {
                if (currentlyPlayingFilePos > (mFileData.length * 0.75))
                {
                    int moveAmount = oldBottom - bottom;
                    if (currentlyPlayingFilePos == (mFileData.length - 1))
                        moveAmount += 35;

                    mRecyclerView.scrollBy(0, moveAmount);
                }
                else
                {
                    mRecyclerView.scrollToPosition(currentlyPlayingFilePos);
                }
            }
        }
    });