我已经在我的应用中为actionBarStyle
实施了ActionBar
。这是下面的xml代码:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyActionBarTheme" parent="@android:style/Theme.Holo">
<item name="android:windowActionBarOverlay">true</item>
<item name="android:actionBarStyle">@style/MyCustomActionBar</item>
</style>
<style name="MyCustomActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">@android:color/transparent</item>
<item name="android:backgroundSplit">@android:color/transparent</item>
<item name="android:displayOptions">useLogo</item>
</style>
这是我的Activity OnCreate
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setLogo(R.drawable.ic_logo);
setContentView(R.layout.activity_home);
initializeViews();
manageFragments();
}
问题是我的ActionBar
根本没有显示,当我从My XML中删除displayOptions
项时。它显示标题。现在我可以随时删除标题(将标题字符串设置为空白)但我不希望这样,因为它显示默认的ActionBar
样式/主题几秒钟然后我的自定义主题(我猜你知道)这个)。我不知道问题是什么。请帮忙。谢谢......
答案 0 :(得分:6)
如果您在主题中设置android:logo
,则无需在代码中设置它。
我认为您的显示选项中可能还需要showHome
,例如
<item name="android:displayOptions">showHome|useLogo</item>
修改强>
下面是我用来隐藏徽标并在操作栏中显示标题的示例主题,此示例使用ActionBarSherlock
,因此如果您不使用它,则需要相应地调整父样式名称
<style name="AppTheme" parent="style/Theme.Sherlock.Light.DarkActionBar">
<item name="android:windowBackground">@color/background_primary</item>
<item name="android:icon">@drawable/appicon</item>
<!-- For the home as up icon on sub pages -->
<item name="android:homeAsUpIndicator">@drawable/back</item>
<item name="homeAsUpIndicator">@drawable/back</item>
<item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
<item name="actionBarStyle">@style/AppTheme.ActionBar</item>
</style>
<style name="AppTheme.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
<item name="android:displayOptions">showTitle</item>
<item name="displayOptions">showTitle</item>
<item name="android:titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
<item name="titleTextStyle">@style/AppTheme.ActionBar.TitleTextStyle</item>
<item name="android:background">@color/actionbar_bg_color</item>
<item name="background">@color/actionbar_bg_color</item>
<item name="android:backgroundStacked">@color/actionbar_bg_color</item>
<item name="backgroundStacked">@color/actionbar_bg_color</item>
答案 1 :(得分:1)
这适用于4.2 api版本。
在ActionBar样式中添加此...
<item name="android:displayOptions">showHome|useLogo</item>
<item name="displayOptions">showHome|useLogo</item>
<!-- Support library compatibility -->
<item name="android:logo">@drawable/ic_home</item>
<item name="logo">@drawable/ic_home</item>
完整示例,为您的完整应用添加新主题。
<!-- This is the generated app theme -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!-- Support library compatibility -->
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<!-- general styles for the action bar -->
<style name="MyActionBar"
parent="@style/Widget.AppCompat.ActionBar">
<item name="android:displayOptions">showHome|useLogo</item>
<!-- Support library compatibility -->
<item name="displayOptions">showHome|useLogo</item>
<item name="android:logo">@drawable/ic_home</item>
<!-- Support library compatibility -->
<item name="logo">@drawable/ic_home</item>
</style>
答案 2 :(得分:0)
如果您想使用代码来实现此效果,可以从片段中调用以下代码。
ActionBarActivity activity = (ActionBarActivity) getActivity();
activity.getActionBar().setDisplayUseLogoEnabled(true);
activity.getActionBar().setDisplayShowHomeEnabled(true);
您需要在AndroidManifest.xml中指定活动的徽标属性,例如
<activity
android:name=".....MainEntryActivity"
android:label="@string/label_main"
android:screenOrientation="portrait"
android:logo="@drawable/ic_ios_logo"
android:theme="@style/AppCompatTheme" >
</activity>