17

ActionBar のスタイリングに苦労しています。私のアプリには、3 つのタブを持つ ActionBar があります。選択したタブに背景色を付け、選択していないタブに別の色を表示しようとしています。私はこのリファレンスに従っています: Customizing Action Bar。しかし、すべてのタブは選択された色を示しています。

私のstyles.xmlファイルは次のとおりです。

<style name="MyActionBarTabStyle" parent="android:style/Widget.Holo.Light.ActionBar.TabBar">
    <item name="android:background">@drawable/tab_background</item>
    <item name="android:paddingLeft">32dp</item>
    <item name="android:paddingRight">32dp</item>
</style> 

<style name="MyActionBarTabBarStyle" parent="android:style/Widget.Holo.Light.ActionBar.TabBar">

    <item name="android:background">@drawable/red</item>
</style> 


<style name="AppTheme.Light" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/ActionBar.Light</item>
    <item name="android:actionBarTabStyle">@style/MyActionBarTabStyle</item>
    <item name="android:actionBarTabBarStyle">@style/MyActionBarTabBarStyle</item>

</style>

tab_background は 9 パッチです。また、正しい親 ( parent="android:style/Widget.Holo.Light.ActionBar.TabBar) からアクション バー タブを継承しているかどうかもわかりません。リファレンスを調べたところ、スタイルの階層を理解するのが非常に難しいことがわかりました

タブが選択されていない、または選択されていないのはなぜですか? よろしくお願いいたします。

4

1 に答える 1

12

問題を解決しました。最初は State List Drawables を使用しませんでした。StateListDrawable を経由する代わりに、背景画像を直接使用しました。StateListDrawable を使用すると、タグが選択されているかどうかに基づいて異なる背景を設定できます。

だから私はファイルを追加しましたtab_background_select.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
        android:drawable="@drawable/tab_background" />

</selector>

そして私は私のからこれを参照しましたstyles.xml:

 <item name="android:background">@drawable/tab_background_select</item>
于 2012-11-08T11:22:58.307 に答える