代码之家  ›  专栏  ›  技术社区  ›  wufufufu

使用GridView填充或自定义GridView覆盖ActionBar以显示整个第一个图像?

  •  4
  • wufufufu  · 技术社区  · 13 年前

    我有一个包含GridView的活动。ActionBar设置为覆盖模式。

    现在,您只能看到第一个图像的一半,因为ActionBar将其切成两半。

    如何在GridView的内部添加填充,以便它以可以看到整个第一个图像的方式进行初始化?或者还有别的办法吗?例如,我该如何扩展GridView以创建一个在前端具有内置可配置动态间隙的GridView?

    example

    实例 (尽管ListView而不是GridView):reddit是一款有趣的应用: https://play.google.com/store/apps/details?id=com.andrewshu.android.reddit

    编辑: 我是 隐藏ActionBar 每当用户以某一速率向下滚动或超过某一级别时。

    3 回复  |  直到 13 年前
        1
  •  4
  •   Jeff Gilfelt    13 年前

    使用 ViewTreeObserver.OnGlobalLayoutListener 在您的“活动”或“片段”中,以确定您的列数 GridView 将显示(假设它根据屏幕大小和方向而变化),然后在您的 Adapter 实施在里面 getView() 如果 position 小于列数,则返回一个高度与操作栏匹配的空视图,否则按正常方式绑定数据。

    在谷歌的“高效显示位图”示例应用程序中,有一个很好的例子可以满足您的需求: https://developer.android.com/training/displaying-bitmaps/display-bitmap.html

    以下是相关的源代码: https://android.googlesource.com/platform/development/+/master/samples/training/bitmapfun/src/com/example/android/bitmapfun/ui/ImageGridFragment.java

        2
  •  4
  •   adneal    13 年前

    尝试添加 android:layout_marginTop="?android:attr/actionBarSize" 给你的父母 GridView ,或 网格视图 如果没有的话。

    这将向下推动布局,使其位于 ActionBar .

    编辑

    您可能需要考虑使用 ListView 而不是 网格视图 。原因是,您可以通过创建一个假标头,然后调用 ListView.addHeaderView 。你不能用 网格视图 。你所说的绝对可以用 网格视图 ,但这将需要您对其进行子类化并对其进行大量修改。

    头球

    <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" />
    
        3
  •  3
  •   marius    11 年前

    在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" />
    

    这里最重要的几行是: 安卓系统:paddingTop 安卓系统:clipToPadding . 在我的应用程序中,当我用上面的网格视图打开一个活动时,第一行是完全可见的。然后,当我向下滚动时,ActionBar会隐藏起来,网格视图会填满整个屏幕。

    推荐文章