8

我试图在操作栏上解决这个问题,但从我可以看到的标题基本上是一个 TextView 但我需要放置一个图像而不是纯文本。我尝试将其设置到 Style Themes.xml 中,如下所示:

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

然后我定义了这种风格

 <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@drawable/action_background</item>
    <item name="android:titleTextStyle">@style/ActionbarTitleStyle</item>
</style>

我认为我可以定义标题的背景,但即使我这样做不是我想要的,请尝试 getActionBar().setCustomView(layout); 但是在调用 setContentView 之前我的操作栏为空,我需要在 Base 类中使用它。

PD。我只需要关心 HONEYCOMB 和更高版本,所以请不要建议 Sherlock 或 Jonhanilson 实现。

4

2 回答 2

16

如果你想要一个图像,你可以指定应用程序的标志和图标(它将被用来代替图标):

<application
    android:icon="@drawable/ic_launcher"
    android:logo="@drawable/logo"
    android:label="@string/app_name"
    android:name=".AppName"
    >

现在你有一个任意图像而不是你的启动器图标。您接下来需要做的是摆脱文本。在您的样式中执行以下操作:

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar">
    <item name="titleTextStyle">@style/NoTitleText</item>
    <item name="android:titleTextStyle">@style/NoTitleText</item>
    <item name="subtitleTextStyle">@style/NoTitleText</item>
    <item name="android:subtitleTextStyle">@style/NoTitleText</item>     
</style>

<style name="NoTitleText">
    <item name="android:textSize">0sp</item>
    <item name="android:textColor">#00000000</item>
</style>

如果我没记错的话,你应该同时使用item name="titleTextStyle"item name="android:titleTextStyle"如果你使用 ActionBarSherlock。

于 2012-05-10T14:55:03.670 回答
1

像这样覆盖 setContentView:

@Override
public void setContentView(int resLayoutId) {
    super.setContentView(resLayoutId);
    // TODO Set your actionbar changes here
}

或者,您可以这样做:

<style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:background">@drawable/action_background</item>
    <item name="android:titleTextStyle">@style/ActionbarTitleStyle</item>
    <item name="android:displayOptions">showCustom</item>
    <item name="android:customNavigationLayout">@layout/custom_nav_layout</item>
</style>
于 2012-05-10T14:56:09.613 回答