Che*_*eng 8 android actionbarsherlock
目前,我正在使用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>
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)
但是,通过这样做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.???
}
Run Code Online (Sandbox Code Playgroud)
我的问题是
windowActionBarOverlay在运行时转换样式?要回答您的第一个问题,您不需要让父活动和子活动使用相同的主题来使“向上”按钮正常工作。事实上,我正在开发一个类似的父/子活动应用程序,并且它使用两个不同的主题(父级没有覆盖的主题和子级的全屏主题(带覆盖))工作得很好。
一定还有其他原因导致它不起作用......
确保您已将MainActivity定义为第二个 Activity 的父级。您可以通过代码或首选方式在AndroidManifest.xml中执行此操作:
<activity
android:name=".SecondActivity"
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)确保在您的子活动中,您已激活“向上”导航:
final ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)对于第二个问题,请尝试将'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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7488 次 |
| 最近记录: |