Android: ScrollView 内にある ListView の高さが 1行になるのを回避する

久々に Android のネタです。ListView のカスタムは手間なので LinearLayout など使ってさくさくレイアウトしたいものです。だけど、ScrollView 内に ListView があると ListView の子どもが 1行表示になった。これは困るので対策。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ListAdapter la = lv.getAdapter();
if (la == null)
{
    return;
}

int i;
int h = 0; // ListView トータルの高さ

for (i = 0; i < la.getCount(); i++)
{
    View item = la.getView(i, null, lv);
    item.measure(0, 0);
    h += item.getMeasuredHeight();
}

ViewGroup.LayoutParams p = lv.getLayoutParams();
p.height = h + (lv.getDividerHeight() * (la.getCount() - 1));
lv.setLayoutParams(p);

参照: How can I put a ListView into a ScrollView without it collapsing?

Loading Facebook Comments ...

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください