VerticalGridView 水平滚动

问题描述 投票:0回答:4

我终于成功将 Android 支持库中的 VerticalGridView 添加到我的项目中。 现在的问题是网格水平和垂直滚动!

这是我的来源:

<android.support.v17.leanback.widget.VerticalGridView
            android:id="@+id/my_recycler_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="vertical" />

和java代码:

mRecyclerView = (VerticalGridView) rootView.findViewById(R.id.my_recycler_view);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setNumColumns(4);
mRecyclerView.setVerticalMargin(24);
android grid android-support-library
4个回答
1
投票

我已经找到了解决这个问题的方法。您只需将

android.support.v7.widget.GridLayoutManager
设置为
VerticalGridView
的布局管理器,如下所示(请注意,列数在构造函数中传递):

mRecyclerView = (VerticalGridView) rootView.findViewById(R.id.my_recycler_view);
mRecyclerView.setLayoutManager(new GridLayoutManager(context, 4));
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setVerticalMargin(24);

0
投票

无论你选择哪一个,你都可以拿着这个列表双向滚动,感觉就像可以在屏幕上移动一样。必须有一种方法可以禁用一个方向的滚动

有办法处理吗?


0
投票

在使用扩展 VerticalGridSupportFragment 的片段时,我遇到了同样的问题。解决方案是使用自定义 VerticalGridPresenter,并在此应用自定义 GridLayoutManager。

在你的片段中:

VerticalGridPresenter gridPresenter = new CustomVerticalGridPresenter(FocusHighlight.ZOOM_FACTOR_SMALL, false);

CustomVerticalGridPresenter 类:

public class CustomVerticalGridPresenter extends VerticalGridPresenter {

    public CustomVerticalGridPresenter(int focusZoomFactor, boolean useFocusDimmer) {
        super(focusZoomFactor, useFocusDimmer);
    }

    @SuppressLint("ClickableViewAccessibility")
    @Override
    protected ViewHolder createGridViewHolder(ViewGroup parent) {
        ViewHolder vh = super.createGridViewHolder(parent);
        VerticalGridView gridView = vh.getGridView();
        // Apply our custom LayoutManager that disables horizontal scrolling
        NoHorizontalScrollGridLayoutManager layoutManager = new NoHorizontalScrollGridLayoutManager(
                parent.getContext(), getNumberOfColumns());
        gridView.setLayoutManager(layoutManager);
        return vh;
    }
}

NoHorizontalScrollGridLayoutManager 类:

public class NoHorizontalScrollGridLayoutManager extends GridLayoutManager {

    public NoHorizontalScrollGridLayoutManager(Context context, int spanCount) {
        super(context, spanCount);
    }

    @Override
    public boolean canScrollHorizontally() {
        // Return false to prevent horizontal scrolling
        return false;
    }

    @Override
    public boolean canScrollVertically() {
        // Allow vertical scrolling
        return true;
    }
}

-1
投票

在leanback lib中有两个类:1.VerticalGridView 2.HorizontalGridView 你可以使用 HorizontalGridView 进行水平滚动

© www.soinside.com 2019 - 2024. All rights reserved.