Заполнение индикатора "вверх" панели действий
Я ищу способ стирать значок "вверх" ActionBar, который отображается, когда вы настроили его для отображения из своей Activity:
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Я оглядывался и нашел способ добавить отступы между домашним значком и заголовком (Заполнение между значком дома и заголовком ActionBar), но не способ добавления отступов между значком дома и значком индикатора вверх.
Я вырыл в ActionBarView.HomeView
в источнике android и, похоже, раздувал индикатор вверх по этому вызову:
mUpView = findViewById(com.android.internal.R.id.up);
Проблема заключается в том, что com.android.internal.R.id.up
является внутренним, поэтому я не могу получить к нему доступ, поэтому вышеупомянутое связанное решение для заполнения значка дома не будет работать. В идеале я хотел бы переопределить ActionBarView.HomeView
, но он был закрыт в ActionBarView
.
Кто-нибудь знает, может ли ActionBarSherlock наилучшим образом отменить это поведение? Я рассмотрел предоставление пользовательского макета дома, но найденные вами потоки показали, что было бы неплохо расходиться со стандартными классами Android.
Любые идеи?
Ответы
Ответ 1
Как и в случае API 15, позиционирование этих элементов жестко закодировано в ресурсы компоновки. Единственная альтернатива, которую у вас есть, - использовать пользовательский макет навигации для создания собственной и скрытия встроенной домашней навигации.
Ответ 2
Это решение будет работать
ImageView view = (ImageView)findViewById(android.R.id.home);
view.setPadding(10, 0, 0, 0);
НО, вы будете вынуждены поместить этот код в родительское действие или в каждое действие, которое вы хотите добавить отступ к домашней кнопке.
Я предлагаю этот подход:
-
Создайте выпадающий список слоев со следующим кодом:
<?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>
Таким образом вы будете добавлять отступы между кнопкой "Назад" и кнопкой "Домой" в панели действий для совместной работы, и вам придется добавлять этот код только один раз и будут доступны в целом приложении!
Ответ 3
Фактически этот ответ правильный. Просто установите левую проставку кнопки "домой", и она добавит отступы между кнопкой "домой" и стрелкой вверх
ImageView view = (ImageView)findViewById(android.R.id.home);
view.setPadding(10, 0, 0, 0);
Ответ 4
Может быть, он работает, если вы добавите дополнение к графике (например, в Photoshop) и установите этот рисунок в теме с атрибутом
<item name="android:homeAsUpIndicator">@drawable/up_with_padding</item>
Ответ 5
Я просто добавлю к @blacksh33p ответ, как получить логотип 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
Ответ 6
В моем мобильном телефоне ИТ-работа.
Решение находится ниже:
<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"
Ответ 7
Просто добавьте обратный вызов макета "actionbar_back_selector"
И поставьте этот код
И в файле Java (в каком макете вам нужна кнопка вверх, соответствующая java файл). Поместите этот код ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(истина); actionBar.setHomeButtonEnabled(истина); actionBar.setHomeAsUpIndicator(R.drawable.actionbar_back_selector);
Ответ 8
вы можете определить стиль для "HomeAsUpIndicator" в вашей теме следующим образом:
<item name="toolbarNavigationButtonStyle">@style/MyToolbarNavigationButtonStyle</item>
в котором toobarNavigationButtonStyle
используется для определения всех стилей для этого индикатора, вы можете изменить его ширину и paddingEnd, чтобы увеличить разрыв между ним и текстом Title.