在Android上,在GridView的底部获得一个滚动到视图的按钮

在Android上,在GridView的底部获得一个滚动到视图的按钮,android,gridview,Android,Gridview,我正在尝试将现有的iPhone应用程序移植到android。我希望有一个按钮滚动到GridView底部的视图中,使用户能够从服务器加载更多数据。目前,我的解决方案只是在屏幕底部固定一个按钮,而不是让它滚动到视图中 这是我的布局代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" androi

我正在尝试将现有的iPhone应用程序移植到android。我希望有一个按钮滚动到GridView底部的视图中,使用户能够从服务器加载更多数据。目前,我的解决方案只是在屏幕底部固定一个按钮,而不是让它滚动到视图中

这是我的布局代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"    
        >   
        <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
            android:id="@+id/grid"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:columnWidth="70dp"
            android:numColumns="auto_fit"
            android:verticalSpacing="0dp"
            android:horizontalSpacing="0dp"
            android:stretchMode="columnWidth"
            android:gravity="center"
            android:background="#000000"
        />
        <Button
        android:id="@+id/load_more"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:text="Load More" 
        />
    </LinearLayout>
固定屏幕底部的按钮不起作用,因为我计划在屏幕底部放置广告

有人能从概念上解释一下如何让load more按钮滚动到视图中,或者让我看一些示例代码,或者告诉我为什么Android不习惯使用这种方式,以及它使用什么其他UI约定在GridView中加载更多数据


谢谢

您可以在主线布局中放置滚动视图。但是,ScrollView只能有一个直接子级,因此您需要在其中放置另一个LinearLayout,它将包含GridView和按钮。

您可以在主LinearLayout中放置ScrollView。但是,ScrollView只能有一个直接子级,因此您需要在其中放置另一个LinearLayout,它将包含GridView和按钮。

我在滚动GridView和刷新基础数据时遇到了类似的问题,注意到scoll没有重置到开头。我用下面的代码片段解决了这个问题

gvKeys.setSelection(0);
我猜想,如果您知道网格中的项数N,那么以下方法将起作用:

gvKeys.setSelection(N);

我在滚动GridView时遇到了类似的问题,在刷新底层数据之后,我注意到scoll没有重置为开始。我用下面的代码片段解决了这个问题

gvKeys.setSelection(0);
我猜想,如果您知道网格中的项数N,那么以下方法将起作用:

gvKeys.setSelection(N);

这几乎奏效了……不幸的是,GridView在ScrollView/LinearLayout中没有正确调整大小。GridView似乎只知道如何根据屏幕调整自身大小,从而裁剪不适合的其他行。包裹内容的布局高度不会强制GridView根据其所需的实际垂直空间大小调整自身大小。有什么想法吗?我可以告诉GridView以编程方式将其自身调整到所需的高度吗?@esilver:您解决了调整大小的问题了吗?我有同样的issue@noah不,我没有成功。我猜你是在试图复制我以前的某种iOS网格设计。在iOS上的网格底部,我有一个“加载更多”按钮。在droid上,我只是简单地将LoadMore按钮放在菜单中。我还有检测网格何时滚动到底并自动加载更多内容的代码。@esilver您如何编写检测网格何时滚动到底并自动加载更多内容的代码?@Erum使用ListView的setOnScrollListener方法并定义public void onScroll方法。但从根本上说,我不再使用这种方法,因此它可能不会很好地工作。这几乎奏效了……不幸的是,GridView在ScrollView/LinearLayout中没有正确地调整大小。GridView似乎只知道如何根据屏幕调整自身大小,从而裁剪不适合的其他行。包裹内容的布局高度不会强制GridView根据其所需的实际垂直空间大小调整自身大小。有什么想法吗?我可以告诉GridView以编程方式将其自身调整到所需的高度吗?@esilver:您解决了调整大小的问题了吗?我有同样的issue@noah不,我没有成功。我猜你是在试图复制我以前的某种iOS网格设计。在iOS上的网格底部,我有一个“加载更多”按钮。在droid上,我只是简单地将LoadMore按钮放在菜单中。我还有检测网格何时滚动到底并自动加载更多内容的代码。@esilver您如何编写检测网格何时滚动到底并自动加载更多内容的代码?@Erum使用ListView的setOnScrollListener方法并定义public void onScroll方法。但从根本上说,我不再使用这种方法,因此它可能不会很好地工作