9

Можно ли отображать значок домашней иконы и значок на панели инструментов? 1) Возможно ли изменить порядок отображения значка кнопки «Назад» и значок дома. В настоящее время он сначала отображает кнопку со стрелкой, а затем логотип (кнопка дома)Панель инструментов Android с кнопкой «домой» и «назад»

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() 
+0

похоже на этот http: //stackoverflow.com/questions/26525229/toolbar-navigation-icon-never-set. ??. Панель инструментов представляет собой группу представлений. вы можете иметь пользовательский вид и размещать их в любом месте. – Raghunandan

+0

@Raghunandan, Это не дублирующий вопрос, и я попробую с помощью специального макета и установлю его на панель инструментов. Это может сработать. –

+0

Я никогда не говорил, что это дубликат. Я просто хотел узнать, как должна выглядеть ваша панель инструментов. Вы можете создавать пользовательские представления и размещать их соответственно. – Raghunandan

ответ

0
  1. Дизайн наш пользовательский макет в виде отдельного «toolbar_content.xml» и включить этот макет внутри панели инструментов тега в вашем «main_layout.xml ».
  2. Назовите прослушиватели кликов для своих элементов в «toolbar_content.xml» в своей базовой деятельности, чтобы слушатели могли быть доступны через приложение.
1

попробовать с этим

toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { 
     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
      if (item.getItemId() == android.R.id.home) { 
       getActivity().finish(); 
      } 
      return true; 
     } 
    }); 
6

Для навигации обратно. Это сработало для меня.

@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)); 
    }