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