8

現在、私はActionBarSherlockを使用しています。SecondActivityから起動したいMainActivity

MainActivitywindowActionBarOverlayスタイルをオンにしてアクションバーを使用しています。スタイルをオフにし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.??? 
}

私の質問は

  1. 適切なアップ/バック ボタンを表示するために、子アクティビティが親アクティビティと同じテーマのアクション バーを使用する必要があるのはなぜですか? さまざまなテーマを使用しながら、子アクティビティに上/戻るボタンを表示する方法はありますか?
  2. windowActionBarOverlay実行時にスタイルを変更することはできますか?
4

1 に答える 1

4

最初の質問に答えるために、「上へ」ボタンが機能するために同じテーマを使用する親アクティビティと子アクティビティを用意する必要はありません。実際、私は同様の親子アクティビティ アプリケーションに取り組んでおり、2 つの異なるテーマ (親用のオーバーレイなしのテーマと子用のフルスクリーン テーマ (オーバーレイ付き)) を使用して問題なく動作しています。

うまくいかない原因は他にあるはず…

  • MainActivityを 2 番目のアクティビティの親として定義していることを確認してください。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);
    

2 番目の質問については、「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>
于 2013-01-07T23:33:13.880 に答える