子を均等に配置するスライド サイド パネルを作成しようとしています。子は親に動的に追加できます。mdpi 画面の場合、各子は 32x32 dp の ImageButton です。次の効果を実現したい。
ケース 1: 子供が少ない。 レイアウトに子が少ない場合、画像ボタンを均等に配置したいと考えています。
子が少ないパネルの図:
XML レイアウト:
<LinearLayout
android:id="@+id/toolbar"
style="@style/TabbedPanelToolbar"
android:layout_toRightOf="@id/pager"
android:orientation="vertical" >
<ImageButton
android:src="@drawable/ic_tab_info"
style="@style/TabbedPanelToolbarControl" />
<ImageButton
android:src="@drawable/ic_tab_tag"
style="@style/TabbedPanelToolbarControl" />
<ImageButton
android:src="@drawable/ic_tab_chat"
style="@style/TabbedPanelToolbarControl" />
<ImageButton
android:src="@drawable/ic_tab_meta"
style="@style/TabbedPanelToolbarControl" />
</LinearLayout>
スタイル:
<style name="TabbedPanelToolbar" parent="android:style/Widget.ListView">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">match_parent</item>
<item name="android:background">@null</item>
</style>
<style name="TabbedPanelToolbarControl" parent="android:style/Widget.ImageButton">
<item name="android:background">@null</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:paddingTop">5dp</item>
<item name="android:paddingBottom">5dp</item>
<item name="android:layout_weight">1</item>
</style>
ケース 2: 多くの子供。 かなりの数の子がいる場合、レイアウトを特定のポイントに凝縮してからスクロールを開始したいと思います (子を配布するのではなく、親をオーバーフローさせ始めます)。このために、ScrollView を追加する必要がありました。問題は、子がほとんどない LinearLayout がそれらを均等に分散しなくなることです。
多くの子を持つパネルの図:
XML レイアウト:
<ScrollView
android:id="@+id/toolbar_container"
style="@style/TabbedPanelToolbarContainer" >
<LinearLayout
android:id="@+id/toolbar"
style="@style/TabbedPanelToolbar"
android:layout_toRightOf="@id/pager"
android:orientation="vertical" >
<ImageButton
android:src="@drawable/ic_tab_info"
style="@style/TabbedPanelToolbarControl" />
<ImageButton
android:src="@drawable/ic_tab_tag"
style="@style/TabbedPanelToolbarControl" />
<ImageButton
android:src="@drawable/ic_tab_chat"
style="@style/TabbedPanelToolbarControl" />
<ImageButton
android:src="@drawable/ic_tab_meta"
style="@style/TabbedPanelToolbarControl" />
...
</LinearLayout>
</ScrollView>
スタイル:
<style name="TabbedPanelToolbarContainer" parent="android:style/Widget.ScrollView">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">match_parent</item>
<item name="android:scrollbars">none</item>
<item name="android:scrollbarSize">0dp</item>
<item name="android:paddingRight">0dp</item>
<item name="android:scrollbarAlwaysDrawVerticalTrack">false</item>
<item name="android:scrollbarStyle">insideOverlay</item>
<item name="android:background">@null</item>
<item name="android:divider">@null</item>
</style>
<style name="TabbedPanelToolbar" parent="android:style/Widget.ListView">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">match_parent</item>
<item name="android:background">@null</item>
</style>
<style name="TabbedPanelToolbarControl" parent="android:style/Widget.ImageButton">
<item name="android:background">@null</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:paddingTop">5dp</item>
<item name="android:paddingBottom">5dp</item>
<item name="android:layout_weight">1</item>
</style>
私の質問は、上記のことを 1 つの xml レイアウト宣言で実行できるかどうかです。少数の子供には配布し、多数にはスクロールします。そうでない場合、コードでそれを行うための非ハッキーな方法はありますか(小さい画面サイズと大きい画面サイズを考慮して...子供はそれに応じて24dpから96dpに成長します)。