戻るの代わりにツールバーのマテリアルの「閉じる」ボタン


82

Googleの受信トレイアプリで新しいメールを作成しているのを見ましたが、ツールバーには戻るボタン(矢印)の代わりに「閉じる」ボタンがあります(写真を参照)。

どうすればこれを達成できますか?

受信トレイ作成閉じるボタン

回答:


108

使用する  

this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_close);

 

これを達成するために。

独自の閉じるアイコンを作成することも、GitHubに設定されているマテリアルデザインアイコンから取得することもできます。また、この行を上の行の前に追加して、閉じる機能を戻る矢印として機能させます。

this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);

動作しません。戻る矢印が新しいアイコンに置き換わるわけではなく、両方が表示されます。さらに、このソリューションでは、アイコンは「colorPrimaryDark」プロパティを取得しません。
マルタロドリゲス

それは機能しますが、私が望んでいたものではありません。「colorPrimaryDark」を使用して、戻るアイコンと同じように機能することを期待していました。しかし、「閉じる」アイコンはSDKの一部ではないようです。ありがとう@AlokNair!
マルタロドリゲス

1
ActionBarActivityを使用し、マニフェストでPARENTが指定されている場合は、正常に機能します。答えは+1。どうも!
PsyGik 2015年

7
SetHomeAsUpIndicatorの前にsetDisplayHomeAsUpEnabledを呼び出す必要があることがわかりました。そうしないと、アイコンが置き換えられません。
codeChimp 2015

1
元に戻す方法は?
ミシェル・ファインスタイン

22

もちろん、サポートアプリバーを使用している場合は、マニフェストで親を定義してから、onSupportNavigationUp()をオーバーライドする必要があります。また、アイコンパックについては、次の便利なサイトにアクセスしてくださいhttps//www.google.com/design/icons/

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.yourAwesomeLayout);

    setupToolBar();    
}

private void setupToolBar() {
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);

    if (toolbar == null) return;

    setSupportActionBar(toolbar);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
}

@Override
public boolean onSupportNavigateUp() {
    finish(); // close this activity as oppose to navigating up

    return false;
}

ここに画像の説明を入力してください


3
からfalseを返した理由はonSupportNavigateUp()何ですか?ドキュメントには、それは単なる成功の旗であると書かれています
brainmurphy1 2017年

7

返事が遅れて申し訳ありません。私はあなたにとって最も簡単な解決策を見つけました。ここで何よりも答えは私にはうまくいきません(because i want to use toolbar not actionBar due to theming)。したがって、xmlレイアウトを介して閉じるボタンを追加してみてください。そしてそれは動作します。

これは、ツールバー(v7)に閉じるボタンを追加するためのxml構文です。

app:navigationIcon="@drawable/ic_close_black_24dp"

ここのansは出力画像です 出力画像


どこ@drawable/ic_close_black_24dpから来たの?
CACuzcatlan 2018

@CACuzcatlanこれは、ドローアブルのフォルダにあるランダムな画像です。あなたはどんなアイコンでも選ぶことができます。
MikkelLarsen19年

@CACuzcatlanは、AndroidStudioのベクターアセットで見つけることができます。
SouravBagchi19年

5
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitle("Search");
toolbar.setNavigationIcon(R.drawable.abc_ic_clear_mtrl_alpha);
setSupportActionBar(toolbar);

3

マニフェストで親アクティビティを定義する代わりに、次の例のようにonOptionsItemSelectedメソッドで実行するアクションを処理することもできます。

 @Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
        // Respond to the action bar's Up/Home/back button
        case android.R.id.home:
            finish();
            break;
    }
    return super.onOptionsItemSelected(item);
}

-5

スタイルを定義できます。

<style name="Theme.Toolbar.Clear">
    <item name="toolbarNavigationIcon">@drawable/abc_ic_clear_mtrl_alpha</item>
</style>

テーマで使用します。

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