我已经更改了操作栏的颜色和其他内容,以便以所需的颜色和文本打开,但当我打开应用程序时:应用程序以默认主题打开,并立即更改为给定主题。
这种情况发生在像Galaxy Nexus、Nexus 4这样的手机上,但在Nexus 5上没有。我不知道为什么会发生这种事?
在我的应用中设置ContentView之前,我已经设置了操作栏
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setDisplayShowHomeEnabled(true);
getActionBar().setIcon(android.R.color.transparent);
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.actionBarColor)));
setContentView(R.layout.activity_main);
}
我使用以下内容获得主题:http://jgilfelt.github.io/android-actionbarstylegenerator/
我从上面得到的风格是这样的:
<style name="Theme.link" parent="@android:style/Theme.Holo">
<item name="android:actionOverflowButtonStyle">@style/ThemeFor.OverFlow</item>
<item name="android:actionBarItemBackground">@drawable/selectable_background_link</item>
<item name="android:popupMenuStyle">@style/PopupMenu.link</item>
<item name="android:dropDownListViewStyle">@style/DropDownListView.link</item>
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle.link</item>
<item name="android:actionDropDownStyle">@style/DropDownNav.link</item>
<item name="android:actionBarStyle">@style/ActionBar.Solid.link</item>
<item name="android:actionModeBackground">@drawable/cab_background_top_link</item>
<item name="android:actionModeSplitBackground">@drawable/cab_background_bottom_link</item>
<item name="android:actionModeCloseButtonStyle">@style/ActionButton.CloseMode.link</item>
</style>
<style name="ActionBar.Solid.link" parent="@android:style/Widget.Holo.ActionBar.Solid">
<item name="android:background">@drawable/ab_background_textured</item>
<item name="android:backgroundStacked">@drawable/ab_stacked_solid_link</item>
<item name="android:backgroundSplit">@drawable/ab_background_textured_link</item>
<item name="android:progressBarStyle">@style/ProgressBar.link</item>
</style>
<style name="ActionBar.Transparent.link" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">@drawable/ab_transparent_link</item>
<item name="android:progressBarStyle">@style/ProgressBar.link</item>
</style>
<style name="PopupMenu.link" parent="@android:style/Widget.Holo.ListPopupWindow">
<item name="android:popupBackground">@drawable/menu_dropdown_panel_link</item>
</style>
<style name="DropDownListView.link" parent="@android:style/Widget.Holo.ListView.DropDown">
<item name="android:listSelector">@drawable/selectable_background_link</item>
</style>
<style name="ActionBarTabStyle.link" parent="@android:style/Widget.Holo.ActionBar.TabView">
<item name="android:background">@drawable/tab_indicator_ab_link</item>
</style>
<style name="DropDownNav.link" parent="@android:style/Widget.Holo.Spinner">
<item name="android:background">@drawable/spinner_background_ab_link</item>
<item name="android:popupBackground">@drawable/menu_dropdown_panel_link</item>
<item name="android:dropDownSelector">@drawable/selectable_background_link</item>
</style>
<style name="ProgressBar.link" parent="@android:style/Widget.Holo.ProgressBar.Horizontal">
<item name="android:progressDrawable">@drawable/progress_horizontal_link</item>
</style>
<style name="ActionButton.CloseMode.link" parent="@android:style/Widget.Holo.ActionButton.CloseMode">
<item name="android:background">@drawable/btn_cab_done_link</item>
</style>
<!-- this style is only referenced in a Light.DarkActionBar based theme -->
<style name="Theme.link.Widget" parent="@android:style/Theme.Holo">
<item name="android:popupMenuStyle">@style/PopupMenu.link</item>
<item name="android:dropDownListViewStyle">@style/DropDownListView.link</item>
</style>
我称之为清单中的主题:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.link" >
<activity
android:name=".Link_Main"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Link_Support"
android:label="@string/action_support"
android:screenOrientation="portrait" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.ylg.linking.Link_Main" />
</activity>
</application>
有人能帮我修一下吗?
谢谢!
尝试将<item name="android:actionBarStyle">@style/Theme.link</item>
添加到AndroidManifest.xml中的基本活动样式中。
我认为应该将ActionBar.Solid.link
中android:background
的值更改为@color/actionBarColor
。
之所以会发生这种情况,是因为当应用程序运行时,它会从styles.xml获取样式,这样您就可以看到默认样式,之后您将更改onCreate()中的activob栏,这样主题就会立即更改。为了解决这个问题,只使用下面的代码,使用styles.xml设置操作栏的图标和背景颜色。试试看。希望它有效。
<style name="AppBaseTheme" parent="@android:style/Theme.Holo.Light">
.....
<item name="android:actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" arent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/actionBarColor</item>
<item name="android:text">""</item>
<item name="android:icon">@android:color/transparent</item>
</style>
并删除以下代码。
getActionBar().setIcon(android.R.color.transparent);
getActionBar().setBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.actionBarColor)));