ビュー階層をフラット化することで、Androidアプリのレイアウトを最適化しようとしています。これが特に難しいものです!
このレイアウトには、一番上の行と一番下の行(水平方向のサブLinearLayouts自体)を保持するためのメインのLinearLayoutがあります。中央の4つの項目はそれぞれ、layout_weightsを使用して広げられた垂直RelativeLayout(ImageViewとtextViewに対応するため)です。2つのアイテムを含む各行は、水平線形レイアウトでもあります。
言うまでもなく、このレイアウトはひどく非効率的であり、描画時に多くの「振付師がフレームをスキップしました」というメッセージが表示されます。これらのネストされたレイアウトを削除したいのですが、AFAIK RelativeLayoutは、行のアイテムを水平方向に、中央の2つの行を垂直方向に等間隔に配置するのに役立ちません。また、ImageViewとTextViewを複合ドローアブルに置き換えることを検討しましたが、ドローアブルのサイズを制御する方法がわかりません。
どんな助けでも大歓迎です!
編集:レイアウトの大まかな説明は次のとおりです。
<!-- The top bar -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="80dip"
android:background="@drawable/some_image">
...
</LinearLayout>
<!-- Central Layout -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="2"
android:orientation="vertical">
<!-- First Row -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:baselineAligned="false"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:weightSum="2">
<!-- Item 1 -->
<RelativeLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center_vertical">
<!-- ImageView and TextView here -->
</RelativeLayout>
<!-- Item 2 -->
<RelativeLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center_vertical">
<!-- ImageView and TextView here -->
</RelativeLayout>
</LinearLayout>
<!-- End of first row layout -->
<!-- Second Row -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:baselineAligned="false"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:weightSum="2">
<!-- Item 3 -->
<RelativeLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center_vertical">
<!-- ImageView and TextView here -->
</RelativeLayout>
<!-- Item 4 -->
<RelativeLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:gravity="center_vertical">
<!-- ImageView and TextView here -->
</RelativeLayout>
</LinearLayout>
<!-- End of second row layout -->
</LinearLayout>
<!-- End of central layout -->
<!-- Bottom bar -->
<LinearLayout...>
....
</LinearLayout>