Подтвердить что ты не робот

Как изменить показатель 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);
4b9b3361

Ответ 2

Я пробовал 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) не работает: (

Ответ 3

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

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

Ответ 4

Если файл 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

Ответ 5

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

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

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

getSupportActionBar().setDisplayHomeAsUpEnabled(false);

(как показано на телефонах Android 4.0.4, 4.3 и 4.4.2)

Ответ 6

я только что узнал, что он действительно работает   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);
}

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