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

15

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

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.

Любые идеи

Для меня это работа: <br> / Stackoverflow.com вопросы / 26809133 / ... Mnio

Ваш Ответ

8   ответов
7

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

    ImageView view = (ImageView)findViewById(android.R.id.home);
    view.setPadding(10, 0, 0, 0);
хорошо для API 11 и выше 7wonders
Я считаю, что он работает с ActionBarSherlock и для более низких версий starkej2
@ blacksh33p Нет, это не так, но это легко исправить. Sarge Borsch
Возвращает ноль android developer
22

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

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, и вам придется добавить этот код только один раз, и он будет доступен во всем приложении!

findViewById(android.R.id.home) возвращает ноль для меня Ігар Цімошка
Холодный подход! Я только что установил это в суперклассе деятельности ... starkej2
Благодарность! Я использую drawable.xml, он работает хорошо !! LiuWenbin_NO.
9

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

К такому выводу я тоже пришел. Я предполагаю, что Google пытается обеспечить определенные стандарты дизайна. В конце концов, я вернулся к стандартному голографическому режиму по умолчанию, и он выглядит довольно прилично по сравнению с пользовательским индикатором, который я настроил. dgknipp
Это изменилось с появлением панели инструментов в API 21 Vinay Wadhwa
2

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

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

как получить логотип 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
0

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

<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»

0

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

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

<layer-list xmlns: android = " Schemas.android.com / APK / RES / Android "> <item android: drawable =" @ drawable / left22222 "android: right =" 10dp "/> </ layer-list> Это код макета actionbar_back_selector Gopal Samy
0

щим образом:

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

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

Похожие вопросы