Mit Unterstützung der action-bar home aktiviert

Habe ich gerade geändert, die unseren code zur Verwendung der neuen SupportActionBar in der v7-appcompat-Bibliothek, aber wenn der code ausgeführt wird auf einem Jellybean Handy (vermutlich das gleiche problem besteht für Honeycomb-und Ice Cream Sandwich) die home-Taste nicht immer scheinen, um aktiviert zu werden.

Aufrufen getSupportActionBar().setHomeButtonEnabled(true); scheint nicht das zu tun, was es sagt, aber Sie funktioniert für Gingerbread-Handys.

Wenn ich ersetzen Sie es mit getActionBar().setHomeButtonEnabled(true) funktioniert es.

Dem Thema, das ich verwenden für v11+ ist wie folgt:

<style name="MyTheme" parent="@style/Theme.AppCompat">
    <item name="android:windowActionBar">true</item>
    <item name="android:windowNoTitle">false</item>
    <item name="android:listViewStyle">@style/MyListView</item>
    <item name="android:actionBarStyle">@style/MyActionBarStyle</item>
    <item name="android:windowSoftInputMode">stateAlwaysHidden</item>
    <item name="android:buttonStyle">@style/MyButton</item>
    <item name="android:radioButtonStyle">@style/MyRadioButtonStyle</item>
    <item name="android:windowContentOverlay">@drawable/ab_solid_dove_grey</item>
    <item name="android:windowTitleSize">@dimen/action_bar_height</item>
    <item name="android:selectableItemBackground">@drawable/sel_standard_item</item>
    <item name="android:windowBackground">@drawable/default_bg</item>
    <item name="android:actionMenuTextAppearance">@style/MyActionBarText</item>
    <item name="android:actionMenuTextColor">@color/gallery</item>
    <item name="android:tabWidgetStyle">@style/MyTabWidget</item>
</style>

Und die action bar style v11+ definiert ist:

<style name="MyActionBarStyle" parent="android:style/Widget.Holo.ActionBar">
    <item name="android:displayOptions">useLogo|showHome|showCustom</item>
    <item name="displayOptions">useLogo|showHome|showCustom</item>
    <item name="android:actionBarSize">@dimen/action_bar_height</item>
    <item name="android:icon">@drawable/ic_launcher</item>
    <item name="android:background">@android:color/transparent</item> <!-- Remove blue line from bottom of action bar -->
</style>

Jemand, warum die home-Taste ist nicht immer aktiviert, wenn Sie auf einem Android-version, die unterstützt Aktionsleiste korrekt.

=== UPDATE ===
Ich habe gerade geschaut bei der source-code für die appcompat-Bibliothek und habe festgestellt, dass die folgenden in ActionBarImplBase das sieht mir falsch zu sein:

 setHomeButtonEnabled(abp.enableHomeButtonByDefault() || homeAsUp);

Dies bedeutet, dass der home-button wird erst aktiviert, wenn die Android-version ist weniger als ICS oder wenn ich den aktiviert hast das Kennzeichen? - was ich nicht will.

InformationsquelleAutor Barry Irvine | 2013-10-10
Schreibe einen Kommentar