ListFragment всегда использует match_parent/fill_parent

Есть ли у кого-нибудь решение для ListFragment, всегда заставляющее себя вести себя с match_parent вместо wrap_content, я поместил его в LinearLayout с wrap_content и использовал что-то вроде

getView().setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,70));

в ListFragment и даже установить принудительную ширину строки xml, но он по-прежнему использует match_parent. Также кажется, что даже если я использую фрагмент в xml или динамически добавляю фрагмент списка, он все равно заставляет себя соответствовать match_parent.

Любая помощь будет потрясающей. Спасибо


person monmonja    schedule 12.05.2011    source источник
comment
У меня тоже есть эта проблема. Пробовал всевозможные макеты, веса и т. д. — список по-прежнему заполняет весь экран и странным образом перекрывается с другими представлениями в макете. Я дам вам знать, если я найду решение.   -  person LouieGeetoo    schedule 18.09.2011


Ответы (2)


У вас могут быть либо определенные размеры ширины и высоты ListView, либо вы можете иметь match_parent. wrap_content на самом деле не имеет никакого смысла для ListView, особенно потому, что типы элементов в списке могут меняться - поэтому список может иметь ширину 200 пикселей, если это ширина самого широкого видимого элемента, но тогда, если вы прокрутили самый широкий элемент может иметь ширину 300 пикселей, что приведет к изменению ширины ListView.

person Joseph Earl    schedule 12.05.2011

Как я уже упоминал в своем комментарии выше, у меня была аналогичная проблема. Мне удалось исправить мою проблему; может быть, это поможет и вам.

В своей деятельности я создавал фрагмент следующим образом:

DepartmentsFragment dFragment = new DepartmentsFragment();
dFragment.setArguments(getIntent().getExtras());
dFragment.setRetainInstance(true);
getSupportFragmentManager().beginTransaction().add(
        android.R.id.content, dFragment).commit();

Я изменил четвертую строку на это:

getSupportFragmentManager().beginTransaction().add(
        R.id.list, dFragment).commit();

чтобы отразить идентификатор представления, который я хотел заменить своим фрагментом, и он начал работать по желанию. android.R.id.content сказал, чтобы он помещался на весь экран.

Надеюсь это поможет!

person LouieGeetoo    schedule 17.09.2011