在GridView或ListView的底部添加额外的空间

时间:2013-04-12 03:46:38

标签: android android-gridview

是否可以在GridView的底部添加额外的空间(有点像空行)?

我想这样,当你向下滚动到GridView的底部时,会有额外的50dp的空白空间。我尝试将paddingBottom设置为50dp,但似乎没有任何改变。

5 个答案:

答案 0 :(得分:11)

如果我理解你的话,它应该是这样的:

为此,Maciej提到了一个简单的解决方案:How to add extra space inside at the bottom of a GridView

您只需在GridView布局中添加以下内容:

<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="50dp"
android:clipToPadding="false"/>

最重要的部分是clipToPadding属性,必须将其设置为false。

您还可以查看Google提供的相应博客文章,其中提到了此解决方案:https://plus.google.com/+AndroidDevelopers/posts/LpAA7q4jw9M

答案 1 :(得分:1)

您可以实现自己的GridViewAdapter扩展ArrayAdapter和:

@Override
public int getCount() {
    return gridArray.size();
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //...
    if (getCount()-1 == position) {
        convertView.setPadding(0, 0, 0, 50);
    } else {
        convertView.setPadding(0, 0, 0, 0);;
    }
    return convertView;
}

其中50是底部填充,以像素为see View.setPadding(int, int, int, int)

你GridItemView布局桅杆     的机器人:layout_height = “WRAP_CONTENT”

答案 2 :(得分:0)

尝试将paddingBottom添加到其内部的容器中。 listview上的PaddingBottom将无法工作,因为listview会在最后一个元素之后添加它,而不会在屏幕上。有点假装它有无限的高度。

另一个解决方案是使用RelativeLayout并使用固定高度推送视图,但在底部和GridView之间没有图形元素,GridView设置为layout_above该视图。

答案 3 :(得分:0)

尝试这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1"
        android:orientation="vertical" >

        <GridView
            android:id="@+id/gridUsers"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:clipChildren="true"
            android:columnWidth="100dp"
            android:fastScrollEnabled="true"
            android:gravity="center"
            android:numColumns="auto_fit"
            android:scrollbars="none"
            android:stretchMode="columnWidth" >
        </GridView>

        <TextView
            android:id="@android:id/empty"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center"
            android:padding="10dp"
            android:textColor="#f1f1f1"
            android:textSize="15sp"
            android:textStyle="bold"
            android:visibility="gone" >
        </TextView>
    </LinearLayout>

    <LinearLayout
        android:id="@+id/linlaProgressBar"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:gravity="center"
        android:orientation="horizontal" >
    </LinearLayout>

</LinearLayout>

我在应用中使用此功能,其中LinearLayout的ID为linlaProgressBar的{​​{1}}在加载更多数据时用作ProgressBar的容器。

此示例显示GridView,但用ListView替换它将获得相同的结果。

答案 4 :(得分:0)

使用ListView,你会添加一个页脚,遗憾的是在GridView中不支持它。我建议添加一个具有所需高度的空行是最干净的解决方案。