私はリストビューを使用するAndroidアプリケーションを作成していました。 ListViewは、CheckedTextViewリスト項目で構成されます。私のアクティビティには、上部にEditText、下部にTextView、下部にButtonがあります。 TextViewとボタンの間のスペースは、ListViewが占める領域です。今、私のListViewはかなり少ない項目が含まれているので、ListViewのスペース全体が占有されていません。また、残されたスペースは明らかにデバイスによって異なります。私が知りたいのは、ListViewの行の高さを変更してListViewに割り当てられたスペース全体をカバーする方法があるかどうかです。また、アイテムを追加する必要が生じた場合、行の高さはそれに応じて調整されることがあります。 以下のコードスニペットをいくつか用意していますので、レイアウトがどのようなものか分かりやすくなっています。リストビューの行の高さをリストアイテムの数に基づいて動的に変更します
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#D0D0D0"
tools:context=".MainActivity" >
<Button
android:id="@+id/addcourse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Add Course" />
<EditText
android:id="@+id/coursenameet"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:ems="10"
android:layout_marginBottom="2dp"
android:layout_marginTop="2dp"
android:hint="Course Name"
android:inputType="textCapWords" >
<requestFocus />
</EditText>
<View
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="3dp"
android:layout_below="@+id/coursenameet"
android:layout_marginBottom="5dp"
android:layout_marginTop="5dp"
android:background="@android:color/darker_gray" >
</View>
<TextView
android:id="@+id/weekdaytv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/divider"
android:layout_marginBottom="3dp"
android:layout_marginTop="3dp"
android:layout_centerHorizontal="true"
android:text="Select weekdays for this Course" >
</TextView>
<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/addcourse"
android:layout_below="@+id/weekdaytv"
android:divider="#FFFFFF"
android:dividerHeight="2px">
</ListView>
</RelativeLayout>
activity_main.xml
項目はBaseAdapterを使用して実装さCheckedTextViewsあります。あなたはXML
でのListView属性を設定することができ、全体のスペースが割り当てられた埋めるためにあなたのListView
を設定するには、メインの活動
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
adapter = new ItemsAdapter(MainActivity.this, weekdays, 6, lv.getBottom() - lv.getTop());
lv.setAdapter(adapter);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
CheckedTextView ctv = (CheckedTextView) arg1;
adapter.toggle(ctv);
}
});
適切な解決策はありますか? –