ActionBarの戻るボタンをカスタマイズする方法


188

これらの提案を使用して、アクションバーの背景、ロゴ画像、テキストの色をカスタマイズできました
。Android:ActionBarの「ホーム」アイコンをアプリアイコン以外のものに変更するには
ActionBarテキストの色
ActionBar背景画像

カスタマイズしたい最後の部分は、戻るボタンの画像です。デフォルトはグレーですが、白にしたいです。色を変更するか、ドローアブルを指定するか、単純に透明にする(そしてカスタマイズしたロゴ画像にシェブロンを追加する)のいずれかが機能します。どうすればいいですか?


1
アクションバーに[戻る]ボタンはありません。戻るボタンがシステムバーにあるか、画面にありません(オフスクリーンの[戻る]ボタンがあるデバイスの場合)。
CommonsWare、2012

1
@CommonsWare、アクションバーの「左のシェブロン」が何と呼ばれるかわかりませんが、それは私が「戻る」ボタンと呼んでいるものです。今後、Androidデバイスの物理的な戻るボタンを置き換えることが期待されていると思います。
Sunil Gowda

13
いやいや。これが「上向き」のインジケーターです(矢印の向きにかかわらず)。あなたは経由でそれを有効setDisplayHomeAsUpEnabled()ActionBar。特に、単に「戻る」ことは想定されていません。つまり、アプリのアイコンをタップすると、(システムバーの[戻る]ボタンのように)前のアクティビティに戻るのではなく、階層が「上に」移動します。
CommonsWare

2
「物理的な戻るボタンのない新しいデバイスはどうですか、それらすべてに「ソフト」戻るボタンが表示されますか?」すべてのシステムバーに「戻る」ボタンが必要です。
CommonsWare

3
ちょうど例多くにUPボタンを追加したいWILL単純に戻ります。「前に表示した画面が現在の画面の階層的な親でもある場合、戻るキーを押すと、上ボタンを押すのと同じ結果になります。これはよくあることです。」from developer.android.com/design/patterns /navigation.html
ドリ

回答:


390

「アップ」アフォーダンスインジケーターはhomeAsUpIndicator、テーマの属性で指定されたドローアブルによって提供されます。独自のカスタムバージョンでオーバーライドするには、次のようにします。

<style name="Theme.MyFancyTheme" parent="android:Theme.Holo">
    <item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>
</style>

アプリケーションで3.0より前のバージョンをサポートしている場合は、このバージョンのカスタムテーマなどを必ずインストールしてくださいvalues-v11


10
私もうまくいきます。githubのAOSPのように、スタイルセット内をActionBarStyleとして宣言しましたが、機能しませんでした。メインテーマに移動するとうまくいきました。+1
ドリ

37
<item name="android:homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>うまくいきません<item name="homeAsUpIndicator">@drawable/my_fancy_up_indicator</item>でした。それはアンドロイドバージョンのことだと思う
のMichałK

6
これの上部と下部のパディングを0dpに設定する方法はありますか?
James McCracken、2013

3
@JamesMcCracken私がこれを行うことができた唯一の方法は、カスタムレイアウトを使用することでした。
greg7gkb 2013年

4
誰かがこの作品を作ったNavigation DrawerActionBarDrawerToggleupインジケーターを独自のインジケーターに置き換えるため、スタイルに設定しても効果がないと思います...
Lucas Jota

89

そのため、Android APIレベル18以降で追加されたhomeAsUpIndicator()関数を使用して、プログラムで簡単に変更できます。

ActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);

サポートライブラリを利用する場合

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);


5
引き出しを使用している場合はdrawerToggle.setDrawerIndicatorEnabled(false);、インジケーターを変更する前に電話する必要があります
Floss

2
@Flossありがとう、setDrawerIndicatorEnabled(false / true); 要件に基づいて、ホームボタンを一貫した「戻る」と(引き出しを開く/引き出しを閉じる)に設定するという私の問題を解決しました。
Ashraf Alshahawy

1
@Floss引き出しToggle.setDrawerIndicatorEnabled(false); それは私のために動作します:)
コンテキスト

30

質問を確認しました。ここに私が従うステップがあります。ソースコードはGitHubでホストされています:https : //github.com/jiahaoliuliu/sherlockActionBarLab

v11以前のデバイスの実際のスタイルを上書きします。

以下のコードをコピーして、デフォルト値フォルダーのstyles.xmlファイルに貼り付けます。

<resources>
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
    <item name="homeAsUpIndicator">@drawable/ic_home_up</item>
    </style>
</resources>

親は任意のSherlockテーマに変更できることに注意してください。

v11 +デバイスの実際のスタイルを上書きします。

フォルダーの値と同じフォルダーに、values-v11という新しいフォルダーを作成します。Androidは、API以上のデバイスでこのフォルダーのコンテンツを自動的に検索します。

styles.xmlという新しいファイルを作成し、次のコードをファイルに貼り付けます。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="MyCustomTheme" parent="Theme.Sherlock.Light">
    <item name="android:homeAsUpIndicator">@drawable/ic_home_up</item>
    </style>
</resources>

スタイルの名前は、デフォルト値フォルダー内のファイルと同じでなければならず、アイテムhomeAsUpIndicatorではなく、android:homeAsUpIndicatorと呼ばれることに注意してください。

アイテムの問題は、API 11以降のデバイスの場合、SherlockアクションバーがAndroidに付属するデフォルトのアクションバーを使用するためです。キー名はandroid:homeAsUpIndicatorです。ただし、API 10以下のデバイスの場合、Sherlockアクションバーは独自のActionBarを使用します。アップインジケーターとしてのホームは、単純な "homeAsUpIndicator"と呼ばれます。

マニフェストで新しいテーマを使用する

AndroidManifestファイルのアプリケーション/アクティビティのテーマを置き換えます。

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyCustomTheme" >

2
また、すでに利用可能なホロアイコンを探している場合は、@ drawable / abc_ic_ab_back_holo_lightまたは@ drawable / abc_ic_ab_back_holo_darkを試すことができます。
メイソン・リー14

25

戻るナビゲーションアイコンの変更は、ActionBarとToolbarで異なります。

ActionBarオーバーライドhomeAsUpIndicator属性の場合:

<style name="CustomThemeActionBar" parent="android:Theme.Holo">
    <item name="homeAsUpIndicator">@drawable/ic_nav_back</item>
</style>

ツールバーのオーバーライドnavigationIcon属性の場合:

<style name="CustomThemeToolbar" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="navigationIcon">@drawable/ic_nav_back</item>
</style>

19

私は以下のコードを実行onCreate()し、私と一緒に働きました

getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_yourindicator);

5

ツールバーを使用している場合、これらのソリューションは必要ありません。ツールバーのテーマを変更するだけです

app:theme="@style/ThemeOverlay.AppCompat.Light"

app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

dark.actionBarを使用している場合は戻るボタンが白になり、light actionbarテーマを使用している場合は黒になります。


あなたのコードは私にとってはうまくいきますが、そのインジケーターの色を変更できますか?
Steve Luck、

2
colorControlNormalとandroid:textColorSecondaryの値が原因ですが、他にこれらの値も変更されることはよくわかりません。ツールバーのテーマでこれらの値を定義して、自分で試すことができます。
Oguz Ozcan 2015年

「app:theme = "@ style / ThemeOverlay.AppCompat.Light"」を使用してbackgroundIconを背景白で表示していますが、デフォルトの灰色のアイコンが表示されているため、青に変更する必要があります。「colorControlNormal and android:textColorSecondary」は機能しません。
Steve Luck、

2
親として「ThemeOverlay.AppCompat.Light」を持つカスタムテーマを使用します。これでうまくいくかもしれません。
Oguz Ozcan 2015年

1
name = "android:colorControlNormal"ではなく、name = "colorControlNormal"を使用して、ナビゲーションアイコンを変更する解決策を見つけました。しかし、私は他のドローアブルに変更したいのでしょうか?
スティーブラック


0

プロジェクトのmenifest.xmlファイルでback.png画像を使用しました。プロジェクトでうまく機能しています。

<activity
        android:name=".YourActivity"
         android:icon="@drawable/back"
        android:label="@string/app_name" >
    </activity>

0

Gradleリソースディレクトリアイコンでのアイコンの管理が失敗したため、アクションバーのホームボタンアイコンの方向についても同じ問題がありました。

アラビア語のGradleリソースディレクトリではアイコンをx-hdpiに、英語のGradleリソースでは同じアイコン名をxx-hdpiのような別の密度フォルダーに配置しているため、APKでは2つの同じアイコン名が異なるディレクトリにあるため、デバイス密度依存アイコンを選択しますRTLまたはLTR

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.