酒とギターとプログラミング

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GridViewにヘッダを付ける

技術ネタを書く。そう思ってからはや半年。やっとやる気スイッチが入ったかも? というかやっとブログに書こうってなるくらい余裕がでてきたのかもしれない。
今日は、GridViewにヘッダを付けてみたいと思います。
ListViewの場合はaddHeaderView()で簡単に追加できるのですが、GridViewの場合はそのようなメソッドがないので人力で作ります。

構造としては
ScrollView
  LinearLayout
    View(ヘッダ)
    GridView

このように配置してGridViewを継承してonMeasure()で高さを計算してあげます。
@Override
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
       
        //子ビューへ自身の高さを知らせる
        int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
        
        //自身の高さを設定する
        LayoutParams params = getLayoutParams();
        params.height = getMeasuredHeight();

    }


こんな感じです。ただ、この方法で実装するとこのGridViewにセットしたArrayAdapterのgetView()が呼ばれるタイミングがおかしくなります。
画像表示だけ等単純なものなら問題ないと思いますが、Gridによって表示させる情報が違ったりするものは別方法で実装する必要がありそうです。
スポンサーサイト

プロフィール

kzt1110

Author:kzt1110
駆け出しAndroidプログラマになりました!

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

ブロとも申請フォーム

QRコード

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。