【问题标题】:Scrolling GridView only on Button Click仅在按钮单击时滚动 GridView
【发布时间】:2018-01-29 12:27:38
【问题描述】:

我想实现如下布局-

在这个布局中,我想向用户显示所有可用的项目。按向右箭头将显示接下来的 6 个可用项目。这应该通过水平滚动类型的动作发生。 由于项目可能很多,我想为此使用 GridView ,因为它的回收优化。优化是必要的,因为每个项目本身就是一个线性布局。

现在,我不能使用 GridView,因为我只想使用箭头显示接下来的 6 个项目。此外,如果这发生在平滑滚动类型的运动中会很好。

我可以对 Gridview 进行任何调整,以便我可以使用箭头滚动 GridView 以显示接下来的 6 个项目,或者是否有任何其他 ViewGroup 可用于实现这一点以及回收优化。

【问题讨论】:

    标签: android android-layout gridview layout


    【解决方案1】:

    此示例适用于列表视图,您也可以参考网格视图。

    对于具有滚动持续时间的 SmoothScroll:

    getListView().smoothScrollToPositionFromTop(position,offset,duration);
    

    参数 位置 -> 要滚动到的位置 offset ----> 滚动完成时距离视图顶部的位置像素所需的距离 持续时间-> 用于滚动的毫秒数 注意:从 API 11 开始。

    listview 很长,而且还带有字母滚动条。然后我发现同一个函数也可以带其他参数:)

    定位当前选择:

    int h1 = mListView.getHeight();
    int h2 = v.getHeight();
    
    mListView.smoothScrollToPositionFromTop(position, h1/2 - h2/2, duration); 
    

    或者

    您可以使用 RecyclerView : 为此,您必须使用 LayoutManager。请按照以下步骤操作。

    1)。首先,在Activity/Fragment 中声明 LayoutManager。比如我拍了LinearLayoutManager

    private LinearLayoutManager mLinearLayoutManager;
    

    2)。初始化LinearLayoutManager 并将其设置为您的RecyclerView

    mLinearLayoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(mLinearLayoutManager);
    

    3)。在您的按钮onClick, 上执行此操作以滚动到您的RecyclerView 底部。

    mLinearLayoutManager.scrollToPosition(yourList.size() - 1); // yourList 是您传递给 RecyclerView Adapter 的 ArrayList。

    希望这会有所帮助..!!

    【讨论】:

    • 谢谢!!它对我有用。但是,我的团队喜欢它不滚动,所以我使用了 Joshua 的建议。
    【解决方案2】:

    您可以尝试在每次单击时为适配器提供相应的列表输入。然后调用notifydatasetchanged反映View上的变化

    【讨论】:

    • 但是 Gridview 会使用您的方法进行回收优化吗?每个项目都是一个带有许多子视图的线性布局。
    • 我建议使用 RecyclerView。如果您正在寻找一种仅使用 GridView 来解决此问题的方法,很抱歉我无法帮助您,因为我没有使用它。
    • 是的,我可以使用 Recycler View。您能告诉我如何在单击按钮时滚动回收站视图吗?谢谢
    • 我没有在 RecyclerView 中使用滚动。您可以将 RecyclerView 设置为一次显示六个图标。然后每次单击,将图标列表输入更改为 RecyclerView。这样,一次将显示 6 个图标。要显示的图标将取决于您的输入。
    • 但同样,如果我使用这种方法,物品不会被回收。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 2014-05-14
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多