4

GridViewを含むアクティビティがあります。ActionBarはオーバーレイモードに設定されています。

現在、ActionBarが画像を半分にカットしているため、最初の画像の半分しか表示されません。

GridViewの内部にパディングを追加して、最初の画像全体が見えるように初期化するにはどうすればよいですか?または別の方法はありますか?たとえば、GridViewを拡張して、前面に構成可能な動的ギャップが組み込まれたものを作成するにはどうすればよいでしょうか。

例

(ただし、GridViewではなくListView):redditは楽しいアプリです:https ://play.google.com/store/apps/details?id = com.andrewshu.android.reddit

編集:ユーザーが特定の速度で、または特定のレベルを超えてスクロールダウンするたびに、ActionBarを非表示にします。

4

3 に答える 3

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" />
于 2013-03-24T06:34:12.323 に答える
4

ViewTreeObserver.OnGlobalLayoutListenerアクティビティまたはフラグメントでaを使用して、GridView表示する列の数を決定し(画面のサイズと向きによって異なると想定)、その数をAdapter実装で使用します。で、が列数より少ないgetView()場合は、高さがアクションバーと一致する空のビューを返します。それ以外の場合は、通常どおりにデータをバインドします。position

Googleの「ビットマップを効率的に表示する」サンプルアプリケーションで必要なことを正確に実行する優れた例があります: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

于 2013-03-27T21:57:26.517 に答える
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:paddingTopandroid:clipToPaddingです。私のアプリケーションでは、上のグリッドビューでアクティビティを開くと、最初の行が完全に表示されます。次に、下にスクロールすると、ActionBarが非表示になり、グリッドビューがすべての画面に表示されます。

于 2014-09-25T16:11:48.907 に答える