1
listViewをpopupWindowに配置すると、アイテムが多数ある場合、popupWindowが画面サイズを超えてしまいます。そのため、最大高さを制限したいバーリストビューの)を超えた場合、おかげですべてのリストビューの最大高さを設定する方法
listViewをpopupWindowに配置すると、アイテムが多数ある場合、popupWindowが画面サイズを超えてしまいます。そのため、最大高さを制限したいバーリストビューの)を超えた場合、おかげですべてのリストビューの最大高さを設定する方法
は、それはあなたに助け
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = listView.getPaddingTop() + listView.getPaddingBottom();
for (int i = 0; i < 5; i++) //here you can set 5 row at a time if row excceded the scroll automatically available
{
View listItem = listAdapter.getView(i, null, listView);
if (listItem instanceof ViewGroup) {
listItem.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
することができ、あなたのプロジェクトにクラスAppUtilを作成し、この
YourAdapter mYoursAdapter = new YourAdapter();
mListview.setAdapter(mYoursAdapter);
setListViewHeightBasedOnChildren(mListview);
のように使用することができ、これを試してみてください。次のようにしてください:
public class MedicalReportsFragment extends Fragment {
@Bind(R.id.lv_investigative_report)
ListView investigativeReportLV;
private MedicalReportsAdapter mMedicalReportsAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mMedicalReportsAdapter = new MedicalReportsAdapter(getActivity(), mMedicalReportOverviews,true);
investigativeReportLV.setAdapter(mMedicalReportsAdapter);
AppUtil.setListViewHeightBasedOnChildren(investigativeReportLV);
}
}
この答えをチェックアウト:http://stackoverflow.com/a/22002054/3363481 – earthw0rmjim
おかげで、あなたはこのように進むことができ、あなたの活動又はその断片で上記のメソッドを呼び出すために
あなたのソリューションは効率的です – Zijian