« 割り勘計算機(5) | トップページ | 骨折り損のくたびれ儲け »

2011年2月11日 (金)

ListViewの下のView

雪が降りました。まぁ、なごり雪でしょう。とりあえず今は止んでいるようなので、明日はそれほど大きな混乱はなさそうです。

雪で動けなくなる前に床屋を済ませ、食料の買出しをしましたが。

さて、ListViewの話です。件の計算機に行を追加する機能を増やしたのですが、ボタンを押してどんどん行を増やしていくと、想定していなかった動作をしました。
どのようなレイアウトになっているかというと、上に全体の情報を表示する部分があり、中間にListViewを置いて、下にボタン群があります。このボタンを押すとどうなるかというと、ボタンがはみ出すまでListViewが延びて行き、そこでボタンを押せなくなります。

ListViewにスクロールバーが付くと思っていた私が甘かったです。でも、どうやらこれで正しい仕様のようです。

つまり、androidは上にあるものから順にViewを実体化していき、画面からはみ出したところでViewを作るのをやめてしまうらしいのです。表示される可能性がないものは作らないということです。だから、layout_heightがwrap_contentなListViewが画面サイズを超えると、その下にあるViewは作りません。このとき、ListViewはまだ画面から出ていないのでスクロールバーは付きません。

とりあえず、簡単な解としては、ListViewのlayout_heightをサイズ指定するというのがあります。確かにこうすれば全体が表示できるのですが、画面サイズが違う端末で表示すると、あまりうれしくない結果を招きます。

もっといい方法は、というと、ListViewより下にあるViewをListViewのfooterにする、というのがよさげです。こうすれば、ListViewの項目として画面を作ってくれそうです。

こんなこともあろうかと、最近覚えたinstanceofという小技を使ってWarikanAdapterは複数のWarikanクラスを格納できるよう作り変えておいたので、あとはListViewの外の項目をHeaderとFooterに入れればいいはずです。これはまた明日やることにしたいと思います。

アイコンもできたし、もうすぐ完成です。

« 割り勘計算機(5) | トップページ | 骨折り損のくたびれ儲け »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/60027/50842105

この記事へのトラックバック一覧です: ListViewの下のView:

« 割り勘計算機(5) | トップページ | 骨折り損のくたびれ儲け »