LinearLayout に含まれる DialogFragment でリストビューを使用しています
<?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.
問題の原因を特定するために、リストビューの幅と高さを (match_parent / wrap_content ではなく) 固定の 400 dp に変更しました。サイズを固定すると、問題が完全に解消されます。したがって、私の質問: ダイアログ フラグメントが一度レイアウトされたら、そのサイズを調整することを避ける方法はありますか?