目前,我正在使用ActionBarSherlock。我想从SecondActivity
启动MainActivity
。MainActivity
正在使用windowActionBarOverlay
样式已打开的操作栏。 SecondActivity
正在使用windowActionBarOverlay
样式已关闭的操作栏。因此,这就是我的XML的样子。
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:debuggable="false" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/ThemeWithActionBarOverlay"
android:screenOrientation="nosensor" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SecondActivity"
android:theme="@style/ThemeWithoutOverlay">
</activity>
</application>
<resources>
<style name="ThemeWithActionBarOverlay" parent="@style/Theme.Sherlock">
<item name="android:windowActionBarOverlay">true</item>
<item name="abIcon">@drawable/ic_home</item>
<item name="abTitleTextStyle">@style/ActionBarCompatTitle</item>
</style>
<style name="ThemeWithoutOverlay" parent="@style/Theme.Sherlock">
<item name="abIcon">@drawable/ic_home</item>
<item name="abTitleTextStyle">@style/ActionBarCompatTitle</item>
</style>
</resources>
但是,通过这样做,在
SecondActivity
中,我意识到我永远无法在操作栏的左上方有一个向上/向后按钮。尽管显示了图标,但它不可按。仅通过使用与MainActivity
相同的主题(ThemeWithActionBarOverlay),才会显示向上/向后按钮。但是,如果我让SecondActivity
使用与MainActivity
相同的主题,我将无法关闭windowActionBarOverlay
行为。// SecondActivity
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.history_list_activity);
ActionBar actionBar = this.getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
// How to turn android:windowActionBarOverlay attribute to false during runtime?
// actionBar.???
}
我的问题是
windowActionBarOverlay
样式? 最佳答案
要回答您的第一个问题,您无需使用相同的主题进行父项和子项 Activity ,“向上”按钮即可正常工作。实际上,我正在开发一个类似的父/子 Activity 应用程序,并且使用两个不同的主题(父级没有覆盖的主题和子级的全屏主题(有覆盖))可以很好地工作。
它不能正常工作还必须有另一个原因...
<activity
android:name=".SecondActivity"
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
final ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
对于第二个问题,请尝试将'ThemeWithoutOverlay'主题中的'windowActionBarOverlay'覆盖为 false :
<style name="ThemeWithoutOverlay" parent="@style/Theme.Sherlock">
<item name="android:windowActionBarOverlay">false</item>
<item name="windowActionBarOverlay">false</item><
<item name="abIcon">@drawable/ic_home</item>
<item name="abTitleTextStyle">@style/ActionBarCompatTitle</item>
</style>