Я использую список в DialogFragment, содержащемся в LinearLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/dialog_main_margin" >
<com.modelmakertools.simplemind.DragSortListView
android:id="@+id/drag_list_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
где DragSortListView основан на потомке ListView стороннего производителя, который позволяет переупорядочивать элементы с помощью изображения ручки перетаскивания.
Все работает нормально, когда этот код используется в (полноэкранном) действии, но при использовании в android.support.v4.app.DialogFragment перетаскивание элемента приводит к тому, что комбинация диалога + списка постоянно обновляет размер диалога. Это приводит к тому, что перетаскивание происходит очень медленно, и я вижу много сообщений LogCat:
06-06 15:37:07.833: I/Choreographer(17281): Skipped 166 frames! The application may be doing too much work on its main thread.
Чтобы найти источник проблемы, я изменил ширину и высоту списка на фиксированные 400dp (вместо match_parent/wrap_content). Фиксация размера полностью устраняет проблему. Отсюда мой вопрос: есть ли способ избежать того, чтобы фрагмент диалога регулировал его размер после того, как он был выложен один раз?