是否可以在 GridView 底部添加额外的空间(有点像空行)?
我希望在滚动到 GridView 底部时,会多出 50dp 的空白。我尝试将 paddingBottom
设置为 50dp,但似乎没有改变任何东西。
是否可以在 GridView 底部添加额外的空间(有点像空行)?
我希望在滚动到 GridView 底部时,会多出 50dp 的空白。我尝试将 paddingBottom
设置为 50dp,但似乎没有改变任何东西。
如果我理解得正确,它应该看起来像这样:
为此,Maciej在此提供了一个简单的解决方案:如何在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
@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是以像素为单位的底部填充请查看View.setPadding(int, int, int, int)
并且您的GridItemView布局必须为android:layout_height="wrap_content"
可以尝试这样做:
<?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>
我在一个应用程序中使用这个,其中id为linlaProgressBar
的LinearLayout
作为加载更多数据时ProgressBar
的容器。
这个例子展示了一个GridView
,但是将其替换为ListView
将会达到相同的结果。
尝试将paddingBottom添加到其内部的容器中。在listview上使用PaddingBottom不起作用,因为listview会在其最后一个元素之后添加它,而该元素不会显示在屏幕上。它有点像假装自己具有无限高度。
另一种解决方案是使用RelativeLayout,并将一个具有固定高度但没有图形元素的视图推入底部和GridView之间,将GridView设置为在该视图之上布局。