Não consegui mudar a cor do botão Voltar. Estou usando o material design da barra de ferramentas. No meu aplicativo, estou aplicando o fundo preto da barra de ferramentas, mas o design traseiro é preto por padrão, é por isso que eu só quero mudar a cor deste botão Voltar. Por favor, me dê soluções.
Obrigado
Respostas:
use este estilo
<style name="Theme.MyFancyTheme" parent="android:Theme.Holo"> <item name="android:homeAsUpIndicator">@drawable/back_button_image</item> </style>
fonte
Você pode adicionar um estilo ao seu styles.xml,
<style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar"> <!-- Customize color of navigation drawer icon and back arrow --> <item name="colorControlNormal">@color/toolbar_color_control_normal</item> </style>
e adicione isso como tema à sua barra de ferramentas no layout.xml da barra de ferramentas usando app: theme , verifique abaixo
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" android:background="?attr/colorPrimary" app:theme="@style/ToolbarTheme" > </android.support.v7.widget.Toolbar>
fonte
Esta é a maneira mais simples de obter Tema claro e escuro para
app:theme
a barra de ferramentas. Você deve alterar o valor da tag da barra de ferramentasfonte
Theme.AppCompat.Light.DarkActionBar
No meu caso.Para o título branco da barra de ferramentas e a seta branca para cima, use o seguinte tema:
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
fonte
Usa isto:
<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorControlNormal">@color/white</item> </style>
fonte
Tente isto,
final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha); upArrow.setColorFilter(getResources().getColor(R.color.grey), PorterDuff.Mode.SRC_ATOP); getSupportActionBar().setHomeAsUpIndicator(upArrow);
fonte
Você pode usar o seu próprio ícone usando
app:navigationIcon
e para a cor do títuloapp:titleTextColor
Exemplo:
<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?actionBarSize" android:background="@color/colorPrimary" app:navigationIcon="@drawable/ic_arrow_back_white_24dp" app:titleTextColor="@color/white" />
fonte
app:navigationIcon="@drawable/ic_back_black"
Você não precisa mudar o estilo para isso. Depois de configurar sua barra de ferramentas como barra de ação, você pode codificar assim
android.getSupportActionBar().setDisplayHomeAsUpEnabled(true); android.getSupportActionBar().setHomeAsUpIndicator(R.drawable.back); //here back is your drawable image
Mas você não pode mudar a cor da seta para trás por este método
fonte
Se você quiser o botão Voltar branco (←) e o título da barra de ferramentas branca, siga este:
<android.support.design.widget.AppBarLayout android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </android.support.design.widget.AppBarLayout>
Altere o tema de
Dark
paraLight
se desejar o botão preto Voltar (←) e o título preto da barra de ferramentas.fonte
Basta usar
MaterialToolbar
e substituir as cores padrão:<com.google.android.material.appbar.MaterialToolbar style="@style/Widget.MaterialComponents.Toolbar.Primary" android:theme="@style/MyThemeOverlay_Toolbar" ..>
com:
<style name="MyThemeOverlay_Toolbar" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary"> <!-- color used by navigation icon and overflow icon --> <item name="colorOnPrimary">@color/...</item> </style>
Se estiver usando
androidx.appcompat.widget.Toolbar
ouMaterialToolbar
com o estilo padrão (Widget.MaterialComponents.Toolbar
), você pode usar:<androidx.appcompat.widget.Toolbar android:theme="@style/MyThemeOverlay_Toolbar2"
com:
<style name="MyThemeOverlay_Toolbar2" parent="ThemeOverlay.MaterialComponents.Toolbar.Primary"> <!-- This attributes is used by title --> <item name="android:textColorPrimary">@color/white</item> <!-- This attributes is used by navigation icon and overflow icon --> <item name="colorOnPrimary">@color/secondaryColor</item> </style>
fonte
Acho que se o tema deve ser gerado algum problema, mas sua seta preta definida dinamicamente. Então, sugerido tente este.
fonte
Estou usando o
<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar>
tema em meu aplicativo Android e no tema NoActionBar, acolorControlNormal
propriedade é usada para alterar a cor padrão do ícone de navegação Seta do botão Voltar em minha barra de ferramentasstyles.xml
<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorControlNormal">@color/your_color</item> </style>
fonte
Simples e sem preocupações
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:titleTextColor="@color/white" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/testing" /> </android.support.design.widget.CoordinatorLayout>
fonte
Fiz assim usando a biblioteca de componentes de materiais:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar"> <item name="drawerArrowStyle">@style/AppTheme.DrawerArrowToggle</item> </style> <style name="AppTheme.DrawerArrowToggle" parent="Widget.AppCompat.DrawerArrowToggle"> <item name="color">@android:color/white</item> </style>
fonte
Para estilizar a barra de ferramentas no Android 21+ é um pouco diferente.
<style name="DarkTheme.v21" parent="DarkTheme.v19"> <!-- toolbar background color --> <item name="android:navigationBarColor">@color/color_primary_blue_dark</item> <!-- toolbar back button color --> <item name="toolbarNavigationButtonStyle">@style/Toolbar.Button.Navigation.Tinted</item> </style> <style name="Toolbar.Button.Navigation.Tinted" parent="Widget.AppCompat.Toolbar.Button.Navigation"> <item name="tint">@color/color_white</item> </style>
fonte
Você pode adicionar este código em sua classe java. Mas você deve criar um ativo de vetor antes, para que possa personalizar sua seta de volta.
fonte
Se você quiser a cor de fundo do sistema em branco, você pode usar este código
<com.google.android.material.appbar.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:elevation="0dp" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar_notification" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" app:contentInsetStartWithNavigation="0dp"> <include layout="@layout/action_bar_notification" /> </androidx.appcompat.widget.Toolbar> </com.google.android.material.appbar.AppBarLayout>
Nota: -
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
é a chaveA pasta está na sua atividade onde você deseja mostrar o botão Voltar na barra de ação
final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_notification); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(false);
fonte