ActionBar自定义标题为ImaveView而不是TextView

时间:2012-05-10 14:47:54

标签: android customization android-actionbar

我试图在动作栏上解决这个问题,但是我可以看到标题基本上是一个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实施。

2 个答案:

答案 0 :(得分:16)

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

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

现在你有一个任意图像而不是你的lanucher图标。你接下来要做的就是摆脱文本。在你的风格做类似的事情:

<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>

如果我记得很清楚,如果你使用ActionBarSherlock,你应该同时使用item name="titleTextStyle"item name="android:titleTextStyle"

答案 1 :(得分: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>