2

タブ ナビゲーションを使用してアクション バーを設定しました。小さい画面ではタブはアクション バーの下にあり、大きい画面ではタブはアクション バーの内側にあります。私のアクションバーは赤く、タブは黒く色付けされています。タブがアクション バーの下にある場合はセレクターを赤くし、タブがアクション バー内にある場合は色を黒に変更します。

私の問題は、アクションバーの下と内側の両方に赤いセレクターが表示されるか、アクションバーの下と内側の両方に黒いセレクターが表示されることです。タブがアクションバーの下にあるときはセレクターを赤くしたいのですが、タブが内側にあるときはセレクターを黒くしたいと思います。ここに私のstyles_actionbar.xmlがあります:

<style name="Theme.customabthemegenerated" parent="@android:Theme.Holo.Light">
    <item name="android:actionBarItemBackground">@drawable/selectable_background_customabthemegenerated</item>
    <item name="android:actionBarStyle">@style/solid_ActionBar</item>
    <item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>        
    <item name="android:actionBarTabBarStyle">@style/ActionBarTabBarStyle</item>
    <item name="android:actionBarTabTextStyle">@style/ActionBarText</item>
</style>

<style name="solid_ActionBar" parent="@android:Widget.Holo.Light.ActionBar.Solid">
    <item name="android:background">@drawable/ab_solid_customabthemegenerated</item>
    <item name="android:backgroundStacked">@drawable/ab_stacked_solid_customabthemegenerated</item>
    <item name="android:backgroundSplit">@drawable/ab_bottom_solid_customabthemegenerated</item><!-- No difference without it -->
</style>

<style name="ActionBarTabStyle" parent="@android:style/Widget.Holo.ActionBar.TabView">
    <item name="android:background">@drawable/tab_indicator_inside</item>
</style>

<style name="ActionBarTabBarStyle" parent="@android:style/Widget.Holo.ActionBar.TabBar">
    <item name="android:background">@drawable/tab_indicator_outside</item>
</style>

<style name="ActionBarText" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/white</item>
</style>

ActionBarTabBarStyle は、タブがアクション バーの外にあるときにタブのスタイルを設定すると思っていましたが、効果がないようです。アクションバーが分割されているときに赤いセレクターを取得し、アクションバーが積み重ねられているときに黒いセレクターを取得する方法はありますか?

4

1 に答える 1

3

画面幅が 480dp を超える場合は、別のスタイルを提供することでこれを行うことができました。これよりも小さい画面は狭いと見なされ、アクション バーは分割されます (タブは積み上げバーにあります)。

これを行うには、リソース ファイルを作成し、res/values-w480dp/style.xmlタブがアクション バーにマージされるときのタブのスタイルを定義します。通常res/values-w480dp/style.xmlの では、タブが積み重ねられたアクション バーにあるときのタブのスタイルを定義します。

これは、SDK>13 でのみ機能します。

これはあまりクリーンなソリューションではありませんが、これまでのところ機能しています。

于 2012-10-31T12:19:23.907 に答える