GridViewのCellの中身を縦横比を画面に合わせて固定にする

GridViewを画面サイズにあわせつつ、
中身のCellを正方形にして隙間なく表示させたかった。
(マルチデバイスにも対応させたいので)

ただ、GridViewはViewGroupから継承しているので、
中身のView次第でGridViewの挙動が決まってしまう。
つまり、
numColumnsで列の数を決めて単純に行おうとすると、
横幅は画面にそって決めてくれるのだけれども、
縦幅はViewで取得した値そのままが表示されるので、思ったとおりの表示にはならない。

なので、
GetViewで正方形のViewを作ってあげれば、上記の問題にも対応できるなと
考えたのでやってみた。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
     if (convertView == null) {
          LayoutInflater inflater = LayoutInflater.from(context);
          convertView = inflater.inflate(R.layout.list_row, null);
          // ウィンドウマネージャのインスタンス取得
          WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
          // ディスプレイのインスタンス生成
          Display disp = wm.getDefaultDisplay();
          String width = "Width = " + disp.getWidth();
          String height = "Height = " + disp.getHeight();                   
          //widthの幅がわかったので、ここでは5列の例
          convertView.setWidth(width/5);
          convertView.setHeight(height/5);
     }

     //以下略

     return convertView;
}


こんな感じで実現できた。
StackOverFlowなんかを見ると、Custom View でonMeasure()をoverrideしてやればいいよー。
なんてことがあって、これもいいなあと。

http://stackoverflow.com/questions/6557516/making-grid-view-items-square