6

有谁知道使用 sdk 版本 14 时用于拆分操作栏的样式资源android:uiOptions="splitActionBarWhenNarrow"

对于正常情况ActionBar,我可以使用

<item name="android:actionBarStyle">@style/MyActionBar</item>

但这不会自动溢出到底部的拆分栏。

我努力了

    <item name="android:actionBarSplitStyle">@style/MyActionBar</item>
    <item name="android:actionBarTabBarStyle">@style/MyActionBar</item>

但它们都对 Galaxy Nexus 没有影响

4

2 回答 2

14

这个答案基本上是niko34 的,但更详细一点。目前,我将顶部操作栏和下部操作栏(下部操作栏更恰当地命名为拆分操作栏)的样式相同,但您会发现将它们设置为不同的样式非常简单。我正在使用ActionBarSherlock v4.2.0,并且已经在运行 Jelly Bean 的三星 Galaxy S3 和运行 Gingerbread 的 HTC Droid Incredible 上完美地测试和运行了它。

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="..."
    android:versionCode="1"
    android:versionName="0.1" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="16" />

    <application
        android:icon="@drawable/launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/main_activity_title"
            android:name=".MainActivity"
            android:screenOrientation="portrait"
            android:theme="@style/Theme.Styled"
            android:uiOptions="splitActionBarWhenNarrow" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

res/values/themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar">
        <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
        <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    </style>
    <style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
        <item name="background">@drawable/bg_actionbar</item>
        <item name="android:background">@drawable/bg_actionbar</item>
        <item name="backgroundSplit">@drawable/bg_actionbar</item>
        <item name="android:backgroundSplit">@drawable/bg_actionbar</item>
    </style>
</resources>

在这里你可以看到我是如何引用@drawable/bg_actionbar几次的。那是一个位于res/drawable目录中的 xml 文件。以下是该文件的来源。

res/drawable/bg_actionbar.xml

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:dither="true"
    android:src="@drawable/bg_tile"
    android:tileMode="repeat" />

在这里,android:src="@drawable/bg_tile"只是引用我的bg_tile.png文件,该文件位于res/drawable-hdpires/drawable-ldpires/drawable-mdpires/drawable-xhdpi.

所以所有这些可能是比必要的更多信息,但总比没有足够的好!:)

于 2012-10-18T20:54:58.963 回答
4

这个问题很老,但我刚刚处理了同样的问题。如果它可以帮助别人...

拆分栏也使用 ActionBarStyle 设置样式。

例如,如果要设置拆分操作栏底部的样式,可以在 MyActionBar 样式中使用名为 backgroundSplit 的项目。

...
<item name="android:actionBarStyle">@style/MyActionBar</item>
...

<style name="MyActionBar">
    <item name="background">@drawable/action_bar_top_background</item>
    <item name="backgroundSplit">@drawable/action_bar_bottom_background</item>
</style>

您可以使用样式而不是可绘制对象来自定义背景,但如果更喜欢在可绘制对象中定义背景。

于 2012-06-14T09:11:26.817 回答