- Changing the Android Toolbar’s Back Arrow Color
- Greg Shackles
- Greg Shackles
- Changing the Android Toolbar’s Back Arrow Color
- Our Solution
- But Wait, There’s More
- androidcodehunter / toolbarcolor
- Как создать стрелку вправо (шеврон) с помощью XML-фигур в android? [закрытый]
- 4 ответов
- Показать Назад Стрелка на панели инструментов Android
Changing the Android Toolbar’s Back Arrow Color
Greg Shackles
Greg Shackles
Changing the Android Toolbar’s Back Arrow Color
As part of updating our apps to use the latest Android support library to bring in some of the nice material design classes in there, we also started switching over to using a Toolbar as our action bar. If you’re just getting started in making the same upgrades in your app I suggest starting with this excellent post on Xamarin’s blog that outlines what you need to do.
Getting things migrated was easy enough but we unexpectedly hit some snags in trying to customize the color of the back button shown in the upper left of the toolbar consistently across Android versions. After spending far longer on this than I’d care to admit and countless permutations of styles and settings, I wanted to share what we settled on in hopes of saving someone else that pain. I also want to give my colleague Sasha a hat tip here because when I say that «we» went through some pain here, I mostly mean her.
Our Solution
After some digging we ended up on this Stackoverflow post that offers a variety of potential solutions to the problem. Our initial preference was to keep things contained entirely in the style XML. This answer seemed promising, but despite working in Android 4.x, Lollipop always seemed to completely ignore anything we set. Frustrating.
Feeling defeated, we opted to try the code solution mentioned in this answer. Success! A bit hacky, but hey, it works. #yolo
Translated to Xamarin.Android it looks like this:
On a related note, that has to be one of the worst named resources I’ve ever seen.
But Wait, There’s More
Unfortunately that wasn’t where the pain ended for us. Our apps make use of a DrawerLayout , where on the root view of the app the home indicator in the toolbar is the standard menu icon. As you navigate away from the root view the indicator changes to the back button we just talked about. Our host activity monitors for changes to the fragment backstack and updates this indicator accordingly. Despite having set the color filter earlier, we found that it was being lost and defaulting back to black.
The culprit? Updating the DrawerIndicatorEnabled property on our ActionBarDrawerToggle , which resets this drawable to the value set by the theme. Since we’re doing the tinting in code, we just needed to make sure to reset the indicator when showing it. The resulting code boils down to something like this:
There are undoubtedly ways to solve this more elegantly, but this approach is working well enough for us for the time being. It also passed a run through Test Cloud to try and smoke out any version/device incompatibilities. All that to change the color of a button. Android is fun sometimes.
Источник
androidcodehunter / toolbarcolor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
From theme |
Also we can do it from java code: |
private void setupToolbar() < |
//for crate home button |
AppCompatActivity activity = (AppCompatActivity) getActivity(); |
activity.setSupportActionBar(mToolbar); |
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); |
final Drawable upArrow = ContextCompat.getDrawable(getActivity(), R.drawable.abc_ic_ab_back_material); |
upArrow.setColorFilter(ContextCompat.getColor(getActivity(), R.color.white), PorterDuff.Mode.SRC_ATOP); |
activity.getSupportActionBar().setHomeAsUpIndicator(upArrow); |
mToolbar.setNavigationOnClickListener(new View.OnClickListener() < |
@Override |
public void onClick(View v) < |
dismiss(); |
> |
>); |
> |
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Источник
Как создать стрелку вправо (шеврон) с помощью XML-фигур в android? [закрытый]
Как создать стрелку вправо, используя xml-формы в android, как это??
4 ответов
у меня была похожая проблема. Вот как я решил это:
первый элемент-пустая форма для расширения drawable. Затем я использовал 2 прямоугольника. Каждая из них имеет 2 закругленные стороны.
вам нужно использовать этот drawable через ImageView :
Примечание: AndroidStudio не отображает различные размеры углов, но он отображается правильно на устройствах.
нет необходимости писать свой собственный XML,есть стандартный шеврон Material design.
В Android Studio, щелкните File -> New -> Vector Asset , затем нажмите значок (кнопка с логотипом Android) и найдите «стрелка».
выберите нужную стрелку, она будет добавлена в ваш проект. Вы можете открыть XML-файл и изменить размеры и цвет, если необходимый.
невозможно создать такую форму, используя только drawable xml( см. ответ user3249477 ), если вы хотите создать такую форму программно, либо вы создаете пользовательские холст или посмотреть. Вот код для формы стрелки с правой стороны. ( Цвет и диаметр могут быть настроены в XML с помощью styleable )
Итак, это один из способов ! . .. drawable изображение более простой способ.
используя свою фантазию, и следующий ответ, вы достигнете своей цели;)
Источник
Показать Назад Стрелка на панели инструментов Android
Я переношу из ActionBar в Toolbar в своем приложении. Но я не знаю, как отображать и устанавливать событие click на Toolbar Back Arrow на Toolbar как Actionbar на Toolbar Actionbar .
С помощью ActionBar я вызываю mActionbar.setDisplayHomeAsUpEnabled(true) . Но подобного метода нет.
Кто-нибудь когда-либо сталкивался с такой ситуацией и каким-то образом нашел способ ее решить?
Если вы используете ActionBarActivity вы можете сказать Android, чтобы использовать Toolbar в качестве ActionBar следующим образом:
будет работать. Вы также можете использовать это в Фрагментах, которые прикреплены к ActionBarActivities вы можете использовать его следующим образом:
Если вы не используете ActionBarActivities или хотите получить стрелку назад на Toolbar которая не установлена в качестве SupportActionBar вы можете использовать следующее:
Если вы используете android.support.v7.widget.Toolbar , то вы должны добавить следующий код в свой AppCompatActivity :
Я вижу много ответов, но вот моя, о которой не упоминалось ранее. Он работает от API 8+.
Вы можете использовать инструмент setNavigationIcon инструментальной панели. Android Doc
Есть много способов добиться этого, вот мой любимый:
Если вы использовали AppCompatActivity и пошли по пути не использовать его, потому что вы не хотели получать автоматический ActionBar который он предоставляет, потому что вы хотите выделить Toolbar из-за ваших потребностей в Material Design и CoordinatorLayout или AppBarLayout , тогда , учти это:
Вы все равно можете использовать AppCompatActivity , вам не нужно прекращать использовать его, чтобы вы могли использовать в своем xml. Просто отключите стиль панели действий следующим образом:
Во-первых, выведите стиль из одной из тем NoActionBar, которые вам нравятся в ваших styles.xml , я использовал Theme.AppCompat.Light.NoActionBar следующим образом:
В манифесте вашего приложения выберите тему детского стиля, которую вы только что определили, например:
В вашей деятельности Xml, если панель инструментов определена следующим образом:
Затем, и это важная часть, вы устанавливаете панель действий поддержки в AppCompatActivity, которую вы расширяете, так что панель инструментов в вашем xml становится панель действий. Я считаю, что это лучший способ, потому что вы можете просто делать много вещей, которые позволяет ActionBar, например меню, название автоматической активности, управление выборами элементов и т. Д., Не прибегая к добавлению пользовательских обработчиков кликов и т. Д.
В переопределении onCreate вашей деятельности выполните следующие действия:
А для API 21+ android:navigationIcon
Я использовал этот метод в документации Google Developer :
Если вы получаете исключение из null-указателя, это может зависеть от темы. Попробуйте использовать другую тему в манифесте или используйте это в качестве альтернативы:
Затем в манифесте, где я устанавливаю родительскую активность для текущей активности:
Я надеюсь, что это поможет вам!
Это отлично работало
Если вы не хотите создавать пользовательскую Toolbar , вы можете сделать это следующим образом:
Источник