11

v7-appcompat ライブラリで提供される新しい SupportActionBar を使用するようにコードを変更しましたが、Jellybean フォンでコードを実行すると (おそらく Honeycomb と Ice Cream Sandwich にも同じ問題が存在します)、ホーム ボタンが機能しないようです。活性化されます。

getSupportActionBar().setHomeButtonEnabled(true); を呼び出しています。それが言うことをしないようですが、Gingerbread電話では機能します.

getActionBar().setHomeButtonEnabled(true) に置き換えると、機能します。

v11+ で使用するテーマは次のとおりです。

<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>

また、アクション バー スタイル v11+ が定義されています。

<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>

アクションバーを正しくサポートするAndroidバージョンでホームボタンが有効にならない理由は誰でも知っています.

=== 更新 === appcompat ライブラリのソース コードを調べたところ、ActionBarImplBase に次のような誤りがあることに気付きました。

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

これは、Android のバージョンが ICS よりも古い場合、またはアップ インジケーターを有効にした場合にのみ、ホーム ボタンが有効になることを意味します。- 私はしたくない。

4

5 に答える 5

1

今すぐこれを試してください。Sherlock にあったのに、このように自分の問題を解決できたからです。上記のスタイルから、テーマをカスタマイズしたことがわかります。私の場合、Sherlockテーマをカスタマイズしましたが、これがAndroid 4.0以降でテーマが失敗するという問題を引き起こしました。そのため、Android 4.0以降で実行されているときにデフォルトのSherlockテーマを使用するようにAndroidに指示するコードを簡単に追加しました。だから私はこれがあなたのために働くと思います。動作していないバージョンの Android で v7-appcompat ライブラリのデフォルト テーマを使用するように Android に指示します。

コードは以下のとおりです。

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
            this.setTheme(R.style.Theme_Sherlock);
        } else {
            this.setTheme(R.style.Theme_Sherlock_Light_DarkActionBar);

        }

あなたの場合、テーマを v7-appcompat ライブラリに編集します。

うまくいく場合は、回答としてマークしてください。これを使用している場所のコードからテーマをカスタマイズできる可能性があると思います。

于 2013-10-11T14:27:07.013 に答える
1

Gingerbread などの Android デバイス用の Sherlock ライブラリを使用してみてください。Android アクション バーは 3.0 以降でのみサポートされているため、sherlock ロック ライブラリは下位互換性を提供します。

http://actionbarsherlock.com/ --- ここからライブラリをダウンロードしてください。

次に、この行をコードに追加します。

ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
         actionBar.setIcon(android.R.color.transparent);

        actionBar.setDisplayUseLogoEnabled(false);

これは、アクション バーにホーム キーを追加するのに役立ちます。また、アイコンを表示したくない場合は、アイコンを非表示にします。ただし、アプリのアイコンをすべてのアクティビティに表示したい場合は、以下の行にコメントしてください

actionBar.setIcon(android.R.color.transparent);

于 2013-10-10T10:43:37.900 に答える
0

アクティビティのActionBarActivityクラスを拡張し、アクティビティのテーマを Theme.AppCompat または同様のテーマに設定することにより、API レベル 7 以降で実行しているときに、アクティビティに ActionBar を追加できます。

于 2013-10-11T04:25:29.927 に答える