Android GridView (Caldroid) 底部的滚动边距

Android GridView (Caldroid) scroll margin on the bottom

我有一个基于 GridView 生成日历的 Caldroid Fragment。它需要整个屏幕。然后我在这个 activity 的底部添加了一个 AdView,问题是横幅覆盖了网格的一些单元格,因此用户无法点击它们。基本上,我想在 GridView 的内部设置一个边距,以允许用户向下滚动日历,当日历到达末尾时,它会继续滚动以获得更多边距。此边距将根据横幅的高度进行设置。

如有必要,我准备修改 caldroid 代码,但我找不到如何使用 GridView 产生这种效果。设置底部填充可避免与 AdView 重叠,但通过放弃整个宽度,我希望在横幅未完全向下滚动时在横幅的左右两侧看到日历。

可能的解决方案:

-也许通过为适配器生成的单元格添加边距可以做到这一点,但我需要知道它们是否来自最后一行。使用 getItemId 始终 returns 0,方法 getClipBounds 和 getClipToOutline 仅限于 API 21.

在您的 GirdView

中使用 android:clipToPadding="false" 和 android:paddingBottom=
<GridView android:id="@+id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="16dip"
    android:clipToPadding="false" />

我不明白为什么需要 inner 边距。 你不能把你的 GridView 和你的 AdView 放在同一个 RelativeLayout

在 GridView 上

android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="x" 

在 AdView 上

android:layout_alignParentBottom="true"

x 是 AdView 的高度

没有重叠,功能性滚动。