2013年5月3日金曜日

[android][ListView]FooterViewのハマりどころ

ListViewのFooterの設定をした際に色々ハマったのでメモ。

addFooterView と removeFooterView に指定するインスタンス


addFooterView と removeFooterView に指定するインスタンスは同一のインスタンスである必要があるみたいです。
xml リソースから View を生成している場合、View を使うタイミングで findViewById で View を取得したりすると思いますが、この場合はインスタンス自体は別になってしまうので addFooterView で追加した Footer を removeFooterView で削除することはできません。
addFooter する View はメンバ変数などで保持していく必要があるみたいです。

Footerに指定するViewをXMLから生成する場合


Footerに指定するViewをXMLから生成する場合、root の View に layout_margin を設定してもうまく設定されないようです。 marginの設定をしたい場合は rootView の配下の View に対して設定する必要があります。つまり、

LinearLayout ー Button 

のような Layout を Footer に設定する場合、root の LinearLayoutに margin を設定してもうまく設定されません。
もし LinearLayout に margin を 設定した場合は、

LinearLayout ー LinearLayout  ー Button 

のような Layout にし、子の LinearLayout に margin を設定するとうまく設定されるみたいです。
# ただしこの方法だと Lint から怒られます。もっと良い方法が本当はあるのかも。

こういうのは Reference 見るとちゃんと書いてあったりするのかなー??

0 件のコメント:

コメントを投稿