Как изменить индикатор HomeAsUp на новой панели инструментов AppCompat?

Я хочу изменить стандартный индикатор ActionBar homeAsUp (drawable) на моей панели инструментов AppCompat. Как это достичь? Появляется только стрелка по умолчанию.

Стили (одинаковые для другого уровня API):

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- API 14 theme customizations can go here. --> <item name="android:windowActionBarOverlay">true</item> <item name="android:homeAsUpIndicator">@drawable/home</item> <!-- Support library compatibility --> <item name="windowActionBarOverlay">true</item> <item name="homeAsUpIndicator">@drawable/home</item> </style> 

Панель инструментов в макете фрагмента:

 <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" android:homeAsUpIndicator="@drawable/home" android:minHeight="?attr/actionBarSize" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" app:theme="@style/AppTheme" /> 

В фрагменте:

 toolbar = (Toolbar) rootView.findViewById(R.id.my_awesome_toolbar); activity.setSupportActionBar(toolbar); ActionBar actionBar = activity.getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayShowTitleEnabled(false); 

Чтобы изменить значок, просто вызовите во время выполнения:

 toolbar.setNavigationIcon(R.drawable.home); 

Трюк со стилями / темами не работает.

Как включить homeAsUp или вызвать setDisplayHomeAsUpEnabled () на отдельной панели инструментов с помощью appcompat v21

Я попробовал setHomeAsUpIndicator(int resId) , он работает.

 private void initToolbar ( Toolbar mToolbar ) { mToolbar.setTitleTextColor ( getResources ().getColor ( R.color.main_title ) ); setSupportActionBar ( mToolbar ); ActionBar actionbar = getSupportActionBar (); actionbar.setDisplayHomeAsUpEnabled ( true ); actionbar.setHomeAsUpIndicator ( R.drawable.ic_action_back ); } 

Но mToolbar.setNavigationIcon(R.drawable.ic_action_back) не работает 🙁

Если файл android.support.v7.app.ActionBarDrawerToggle используется вместе с DrawerLayout и панель инструментов, вы можете изменить значок homeAsUp следующим кодом:

 //set home as up indicator mDrawerToggle.setHomeAsUpIndicator(R.drawable.ic_up_indicator); //remove home as up indicator mDrawerToggle.setHomeAsUpIndicator(null); 

Для отображения индикатора homeAsUpIndicator вместо домашнего индикатора выполните следующие действия:

 mDrawerToggle.setDrawerIndicatorEnabled(false); 

Docs:

ActionBarDrawerToggle # setHomeAsUpIndicator ActionBarDrawerToggle # setDrawerIndicatorEnabled

Просто добавьте эту строку в свои styles.xml

  <item name="navigationIcon">@drawable/ic_back_arrow</item> 

К сожалению, если эта строка стиля используется в общедоступной панели AppCompat ToolBar / App с другими действиями в приложении, включая основное действие, указанная « navigationIcon » будет отображаться автоматически, в отличие от стандартного стандартного HomeAsUpIndicator по умолчанию, который не отображается, если только Явно активируется по желанию в Activity, как правило, следующим образом: (в onCreate () )

 getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

С приведенной выше строкой стиля, поскольку она ведет себя обратным образом, аналогичным образом, индикатор должен быть явно отключен, если не нужно показывать, как на основном мероприятии, следующим образом: (в onCreate () )

 getSupportActionBar().setDisplayHomeAsUpEnabled(false); 

(Как это наблюдается на телефонах Android 4.0.4, 4.3 и 4.4.2)

Я только что узнал, что на самом деле работает toolbar.setNavigationIcon (R.drawable.ic_action_back), и вот код, чтобы заставить его работать.

  @Override protected void onCreate(Bundle savedInstanceState) { ..... Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); toolbar.setNavigationIcon(R.drawable.ic_action_back); 

Отправьте следующий код в onOptionsItemSelected (элемент MenuItem)

 @Override public boolean onOptionsItemSelected(MenuItem item) { ...... if (id == android.R.id.home) { startActivity(new Intent(this, MainActivity.class)); return true; } return super.onOptionsItemSelected(item); } 

Примечание. Основная активность в этом коде – это текущая активность, на которую я хочу вернуть свою заднюю или домашнюю кнопку. надеюсь, это поможет