基本的にListViewの高さって固定されるものだと思うんですけど、要素の数に応じて変えたい時もあります。
そんな時は
・ListViewの1つのアイテムの高さを所得して
・それ*要素数をHeightに設定
するといいんじゃないかと思って調べてみました。
こんな感じでいけるみたいです。
レイアウト
<LinearLayout android:id="@+id/wrapper" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
コード
ListView lv = (ListView) findViewById(R.id.list); View lvItem = lv.getAdapter() .getView(0, null, lv); lvItem.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); int lvItemHeight = lvItem.getMeasuredHeight(); int lvWrapperHeight = lvItemHeight * lv.getCount(); LinearLayout lvWrapper = (LinearLayout) findViewById(R.id.wrapper); lvWrapper.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, lvWrapperHeight));