web-dev-qa-db-ja.com

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

私はこれらからの提案を使用してアクションバーの背景、ロゴ画像とテキストカラーをカスタマイズすることができました:
Android:ActionBarの「Home」アイコンをアプリアイコン以外のものに変更するにはどうすればよいですか?
ActionBarのテキストの色
ActionBarの背景画像

最後にカスタマイズしたいのは戻るボタンの画像です。それはデフォルトで灰色です、そして私はそれが白であることを望みます。色を変更したり、描画可能オブジェクトを指定したり、単純に透明にしたり(そしてカスタマイズしたロゴイメージに山形を追加したり)してもうまくいきます。どうしたらいいですか。

185
Sunil Gowda

「アップ」アフォーダンス指標は、テーマのhomeAsUpIndicator属性で指定されたドロウアブルによって提供されます。それをあなた自身のカスタムバージョンで上書きするためには、このようになります。

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

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

384
Jake Wharton

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

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

サポート図書館を利用する場合

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

86
hitman snipe

質問を確認しました。これが私が従うステップです。ソースコードは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 Action BarはAndroidに付属のデフォルトのAction Barを使用するため、キー名はAndroid:homeAsUpIndicatorです。しかし、API 10以下のデバイスの場合、Sherlock Action Barは独自のActionBarを使用します。これは、ホームとしてのアップインジケーターを単純な「homeAsUpIndicator」と呼びます。

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

AndroidManifestファイルのapplication/activityのテーマを置き換えます。

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

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

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

私は以下のコードonCreate()をやって、私と一緒に働いた

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

ツールバーを使用している場合は、これらの解決策は必要ありません。あなただけのツールバーのテーマを変更する必要があります

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

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

あなたがdark.actionBarを使っているならば、あなたの戻るボタンはあなたが明るいactionbarテーマを使っているならばそれが黒になるだろう他で白になるだろう。

5
Oguz Ozcan

これをトレイに入れる:

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

onCreate()

2
Popal

プロジェクトmanifest.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

0
user2508815