Добавление изображения индикатора «вверх» на панели действий

Я нахожусь в поиске способа стилизовать значок «вверх» на панели действий, который отображается, когда вы настроили его для отображения в своей активности:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);

Я искал вокруг и нашел способ добавить отступ между значком дома и заголовком Вставка между домашней иконкой ActionBar и заголовком), но нельзя добавить отступ между значком дома и значком индикатора вверх.

Я вкопался вActionBarView.HomeView в источнике андроида, и он, кажется, раздувает индикатор вверх с помощью этого вызова:

mUpView = findViewById(com.android.internal.R.id.up);

Проблема - этоcom.android.internal.R.id.up является внутренним, поэтому я не могу получить к нему доступ, поэтому вышеупомянутое связанное решение для заполнения значка home не будет работать. В идеале я хотел бы переопределитьActionBarView.HomeView, но это личное вActionBarView.

Кто-нибудь знает, предоставляет ли ActionBarSherlock хороший способ переопределить это поведение? Я рассмотрел возможность создания собственного макета дома, но потоки, которые я обнаружил, указывали, что было бы неплохо отличаться от стандартных классов Android.

Любые идеи

 Mnio03 июн. 2016 г., 11:35
Для меня это работа: <br> / Stackoverflow.com вопросы / 26809133 / ...

Ответы на вопрос(8)

это работает, если вы добавляете отступ к графике (например, в Photoshop) и устанавливаете эту графику на тему с атрибутом

<item name="android:homeAsUpIndicator">@drawable/up_with_padding</item>
 dgknipp15 июн. 2012 г., 18:18
Я полагаю, что попробовал это, мне придется проверить еще раз, но я почти уверен, что Google исключает любые дополнения, которые вы можете добавить, чтобы сохранить согласованность пользовательского интерфейса.

actionbar_back_selector" и поместите этот код

И в Java-файле (какая раскладка вам нужна, кнопка включения, соответствующая java-файлу) Поместите этот код ActionBar actionBar = getActionBar (); actionBar.setDisplayHomeAsUpEnabled (истина); actionBar.setHomeButtonEnabled (истина); actionBar.setHomeAsUpIndicator (R.drawable.actionbar_back_selector);

 Gopal Samy28 авг. 2015 г., 06:50
<layer-list xmlns: android = " Schemas.android.com / APK / RES / Android "> <item android: drawable =" @ drawable / left22222 "android: right =" 10dp "/> </ layer-list> Это код макета actionbar_back_selector

На самом деле этот ответ правильно. Просто установите левый отступ кнопки «Домой», и он добавит отступ между кнопкой «Домой» и стрелкой ввер

    ImageView view = (ImageView)findViewById(android.R.id.home);
    view.setPadding(10, 0, 0, 0);
 7wonders10 апр. 2013 г., 06:05
хорошо для API 11 и выше
 starkej216 дек. 2013 г., 16:25
Я считаю, что он работает с ActionBarSherlock и для более низких версий
 Sarge Borsch14 янв. 2014 г., 11:30
@ blacksh33p Нет, это не так, но это легко исправить.
 android developer11 мая 2017 г., 16:04
Возвращает ноль

как получить логотип ImageView при использовании ActionBarSherlock для поддержки старых телефонов.

ImageView view = (ImageView)findViewById(android.R.id.home);
if (view == null)
    view = (ImageView)findViewById(R.id.abs__home); // not sure that the name is exactly this - I tested it while developing an app on monodroid
Решение Вопроса

кета. Единственная альтернатива, которую вы можете использовать, - это использовать собственный макет навигации, чтобы создать свой собственный и скрыть встроенную домашнюю навигацию.

 dgknipp15 июн. 2012 г., 18:17
К такому выводу я тоже пришел. Я предполагаю, что Google пытается обеспечить определенные стандарты дизайна. В конце концов, я вернулся к стандартному голографическому режиму по умолчанию, и он выглядит довольно прилично по сравнению с пользовательским индикатором, который я настроил.
 Vinay Wadhwa09 мар. 2015 г., 12:53
Это изменилось с появлением панели инструментов в API 21

В моем мобильном телефоне ЭТО работает. Решение ниже:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
    <bitmap
        android:src="@drawable/frame_menu"
        android:antialias="true"
        android:gravity="center" 
        />
</item>
<item >
    <shape android:shape="rectangle">
        <size android:width="24dp"/>
        <solid android:color="@android:color/transparent"></solid>
        <padding
            android:right="10dp" 
            />
    </shape>

</item>

Самое важное предложение «android: right = 10dp»

Это решение будет работать

ImageView view = (ImageView)findViewById(android.R.id.home);
view.setPadding(10, 0, 0, 0);

НО, вы будете вынуждены поместить этот код в родительское действие или в каждое действие, которое хотите добавить для кнопки hom

Я предлагаю такой подход:

Создайте список слоев для рисования, используя следующий код:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <bitmap
            android:antialias="true"
            android:gravity="center"
            android:src="@drawable/btn_back_actionbar_normal" />
    </item>
    <item>
        <shape android:shape="rectangle" >
            <size android:width="24dp" />
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>

В твоих стилях добавь:

Для значений-11:

<item name="android:homeAsUpIndicator">@drawable/actionbar_back_selector</item>

Для значений:

<item name="homeAsUpIndicator">@drawable/actionbar_back_selector</item>

Таким образом, вы добавите отступ между кнопкой «Назад» и кнопкой «Домой» на панели действий Compat, и вам придется добавить этот код только один раз, и он будет доступен во всем приложении!

 Ігар Цімошка24 дек. 2014 г., 11:56
findViewById(android.R.id.home) возвращает ноль для меня
 starkej212 мар. 2014 г., 19:44
Холодный подход! Я только что установил это в суперклассе деятельности ...
 LiuWenbin_NO.24 мар. 2016 г., 08:35
Благодарность! Я использую drawable.xml, он работает хорошо !!

щим образом:

<item name="toolbarNavigationButtonStyle">@style/MyToolbarNavigationButtonStyle</item>

в которомtoobarNavigationButtonStyle используется для определения всех стилей для этого индикатора, вы можете изменить его ширину и paddingEnd, чтобы увеличить разрыв между ним и текстом заголовка.

Ваш ответ на вопрос