我有一个GridView里面的活动。 ActionBar设置为叠加模式。
现在,您只能看到第一张图片的一半,因为ActionBar会将其减半。
如何在GridView内部添加填充,以便以可以看到整个第一张图像的方式进行初始化?或者还有另一种方式吗?例如,我将如何扩展GridView以创建一个在前端具有内置可配置动态间隙的网格?
示例(虽然ListView而不是GridView):reddit很有趣:https://play.google.com/store/apps/details?id=com.andrewshu.android.reddit
编辑:只要用户以特定级别向下滚动或超过某个级别,我就隐藏ActionBar 。
答案 0 :(得分:4)
尝试将android:layout_marginTop="?android:attr/actionBarSize"
添加到GridView
的父级,或GridView
本身(如果没有)。
这会将您的布局向下推,使其位于ActionBar
。
修改强>
您可能需要考虑ListView
而不是GridView
。原因是,您可以通过创建假标头然后调用ListView.addHeaderView
轻松实现该效果。你不能对GridView
做同样的事情。您所谈论的内容绝对可以通过GridView
完成,但它需要您对其进行子类化并对其进行相当多的修改。
标题强>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?android:attr/actionBarSize" />
答案 1 :(得分:4)
使用活动或片段中的ViewTreeObserver.OnGlobalLayoutListener
来确定GridView
将显示的列数(假设它根据屏幕大小和方向而有所不同),然后在{{1}中使用该数字实现。在Adapter
中,如果getView()
小于列数,则返回一个高度与操作栏匹配的空视图,否则会像平常一样绑定数据。
有一个很好的例子可以完全满足您在Google的“有效显示位图”示例应用程序中的需求:https://developer.android.com/training/displaying-bitmaps/display-bitmap.html
答案 2 :(得分:3)
让ActionBar处于叠加模式,以下内容适用于我:
<GridView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="?android:attr/actionBarSize"
android:clipToPadding="false"
android:numColumns="auto_fit"
android:columnWidth="120dp"
android:verticalSpacing="8dp"
android:horizontalSpacing="8dp"
android:stretchMode="columnWidth"
android:gravity="center"
android:id="@+id/gridLibrary" />
这里最重要的一行是: android:paddingTop 和 android:clipToPadding 。 在我的应用程序中,当我使用上面的gridview打开一个活动时,第一行是完全可见的。然后,当我向下滚动时,ActionBar会隐藏,并且gridview将填满所有屏幕。