2012-03-19 78 views
8

当前,我正在使用ActionBarSherlock。我想从MainActivity启动SecondActivity以编程方式关闭操作栏中的android:windowActionBarOverlay样式

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.??? 
} 

我的问题是

  1. 为什么孩子的活动必须使用具有相同主题的动作栏为父母的,为了有适当的上/背所示按钮?有什么方法可以使用不同的主题,但在儿童活动中是否有上/下按钮?
  2. 在运行期间可以打开windowActionBarOverlay样式吗?
+2

您的第二个问题是否已解决?我也在寻找同样的东西。 – Kameswari 2014-06-10 12:28:02

回答

4

要回答你的第一个问题,你不需要使用相同主题的'上'按钮来工作的父母和孩子的活动。事实上,我正在研究一个类似的父母/小孩活动应用程序,它的工作很好,使用两个不同的主题(一个主题没有覆盖父母,而全屏主题(覆盖))。

必须有另一个原因是不工作...

  • 确保您已经定义MainActivity是次活动的家长。你可以做,要么通过代码,或首选方式,在AndroidManifest.xml中

    <activity 
        android:name=".SecondActivity" 
        <meta-data 
         android:name="android.support.PARENT_ACTIVITY" 
         android:value=".MainActivity" /> 
    </activity> 
    
  • 请确保您的孩子的活动,您已激活“向上”导航:

    final ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    

关于第二个问题,尝试重写'windowActionBarOverlay' 在'ThemeWithoutOverlay'主题 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>