目前,我正在使用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
,我意识到我永远无法在操作栏的左上角设置向上/后退按钮。虽然显示了图标,但它是不可按下的。只有使用相同的主题(ThemeWithActionBarOverlay)作为MainActivity
后退,才会显示上/后退按钮。但是,如果我让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
在运行时转换样式?