web-dev-qa-db-ja.com

Androidホームボタンと戻るボタンの両方を備えたツールバー

ツールバーにホームアイコンと戻るアイコンの両方を表示することはできますか? 1)戻るボタンアイコンとホームアイコンの表示順を入れ替えることは可能ですか?現在、最初に矢印ボタンが表示され、次にロゴ(ホームボタン)が表示されます。

2)2番目の要件は、ホームアイコンをクリックしてアクティビティスタックをクリアし、戻るボタンの場合は前の画面に戻ることです。

矢印キーとロゴとして設定されたホームアイコンを表示する次のコードがあります。これらのアイコンの両方でクリックイベントを処理することは可能ですか?

Toolbar toolbar = (Toolbar)findByViewID(R.id.toolbar);
toolbar.setNavigationIcon(R.drwable.btn_back);
setSuppportActionBar(toolbar);
getSupportActionBar().setLogo(R.drawable.home_icon);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

OnOptionsITemSelectedメソッドで処理することで、矢印アイコンをクリックして処理することができます。ロゴアイコンのクリックを処理する方法はありますか?私のアイデアは、ホームボタンのクリックを使用してアクティビティのスタックをクリアし、戻るボタンを使用して前の画面に戻ることです。

私が試した

toolbar.setNavigationOnClickListener() 

ただし、戻るボタンのクリックには影響しません。

Android.R.id.homeの処理は、

onOptionsItemSelected()
10
Satish Navada

戻るために。これでうまくいきました。

@Override 
    public boolean onOptionsItemSelected(MenuItem menuItem) {
        switch (menuItem.getItemId()) {
            case Android.R.id.home:
                Intent homeIntent = new Intent(this, HomeActivity.class);
                homeIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(homeIntent);
        } 
        return (super.onOptionsItemSelected(menuItem));
    } 
6
Vinay

これで試して

toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            if (item.getItemId() == Android.R.id.home) {
                getActivity().finish();
            }
            return true;
        }
    });
1
  1. カスタムレイアウトを個別の「toolbar_content.xml」として設計し、このレイアウトを「main_layout.xml」のツールバータグ内に含めます。
  2. 基本アクティビティの「toolbar_content.xml」にアイテムのクリックリスナーを記述して、アプリからリスナーを利用できるようにします。