Estou migrando de ActionBar
para Toolbar
no meu aplicativo. Mas não sei como exibir e definir o evento de clique na Seta para trás Toolbar
como eu fiz Actionbar
.
Com ActionBar
, eu ligo mActionbar.setDisplayHomeAsUpEnabled(true)
. Mas não existe um método semelhante como este.
Alguém já enfrentou essa situação e de alguma forma encontrou uma maneira de resolvê-la?
android
android-actionbar
android-actionbar-compat
android-toolbar
Huy Duong Tu
fonte
fonte
Respostas:
Se você estiver usando um
ActionBarActivity
, então você pode dizer Android usar oToolbar
como oActionBar
assim:E depois chama para
vai funcionar. Você também pode usar isso nos fragmentos anexados para
ActionBarActivities
usá-lo assim:Se você não estiver usando
ActionBarActivities
ou quiser colocar a seta para trás em umaToolbar
que não esteja definida como suaSupportActionBar
, poderá usar o seguinte:Se você estiver usando
android.support.v7.widget.Toolbar
, adicione o seguinte código ao seuAppCompatActivity
:fonte
R.drawable.abc_ic_ab_back_mtrl_am_alpha
doisR.drawable.ic_action_back
.toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);
Vejo muitas respostas, mas aqui está a minha, que não foi mencionada antes. Funciona a partir da API 8+.
fonte
onOptionItemSelected()
Voto positivo para Isso completa o que MrEngineer13 não abordou em sua resposta.Existem muitas maneiras de conseguir isso, eis o meu favorito:
Layout:
Atividade:
fonte
setNavigationOnClickListener()
você pode adicionarcase android.R.id.home:
dentro de 'onOptionsItemSelected () `.case android.R.id.home
não funcionou para mim. então, depois de pesquisar por um tempo, sua resposta foi bem-sucedida .. obrigado.você pode usar o método setNavigationIcon da barra de ferramentas. Doc Android
fonte
setNavigationOnClickListener()
foi adicionado no nível 21 da API e acimaSe você não deseja criar um costume
Toolbar
, pode fazer assimEm você
AndroidManifest.xml
você também pode colocar isso
android:theme="@style/Theme.AppCompat.Light"
para<aplication>
marcar, para aplicar a todas as atividadesfonte
if (item.getItemId() == android.R.id.home)
E para API 21+
android:navigationIcon
fonte
Eu usei esse método na documentação do desenvolvedor do Google :
Se você receber uma exceção de ponteiro nulo, isso poderá depender do tema. Tente usar um tema diferente no manifesto ou use isso como alternativa:
Em seguida, no manifesto, onde defino a atividade pai para a atividade atual:
Eu espero que isso te ajude!
fonte
getSupportActionBar()
funcionado. Obrigado!Se você estava usando
AppCompatActivity
e seguiu o caminho de não usá-lo, porque queria não obter o automáticoActionBar
que ele fornece, porque deseja separar oToolbar
, por causa de suas necessidades de Design de Material e ,CoordinatorLayout
ouAppBarLayout
, então, considere isso:Você ainda pode usar o
AppCompatActivity
, não precisa parar de usá-lo apenas para poder usar um<android.support.v7.widget.Toolbar>
no seu xml. Basta desativar o estilo da barra de ação da seguinte maneira:Primeiro, derivar um estilo de um dos temas NoActionBar que você gosta no seu
styles.xml
, useiTheme.AppCompat.Light.NoActionBar
assim:No manifesto do seu aplicativo, escolha o tema de estilo filho que você acabou de definir, assim:
No seu XML de atividade, se a barra de ferramentas estiver definida assim:
Então, e esta é a parte importante, você define a barra de Ação de suporte como AppCompatActivity que está estendendo, para que a barra de ferramentas em seu xml se torne a barra de ação. Eu sinto que essa é uma maneira melhor, porque você pode simplesmente fazer as várias coisas que o ActionBar permite, como menus, título automático de atividade, manipulação de seleção de itens, etc., sem recorrer à adição de manipuladores de clique personalizados, etc.
Na substituição onCreate da sua atividade, faça o seguinte:
fonte
fonte
Maneira simples e fácil de mostrar o botão Voltar na barra de ferramentas
Cole este código no método onCreate
Cole esse método de substituição fora do método onCreate
fonte
Em Kotlin seria
fonte
Facilmente você pode fazê-lo.
Créditos: https://freakycoder.com/android-notes-24-how-to-add-back-button-at-toolbar-941e6577418e
fonte
No
AppCompatActivity
exemplo, você pode fazerfonte
No arquivo de manifesto da atividade em que você deseja adicionar um botão Voltar, usaremos a propriedade android: parentActivityName
PS Este atributo foi introduzido no nível 16 da API.
fonte
Isso funcionou perfeitamente
fonte
Primeiro, você precisa inicializar a barra de ferramentas:
depois chame o botão voltar da barra de ação:
fonte
Se você deseja obter a seta para trás em uma barra de ferramentas que não está definida como sua SupportActionBar:
(kotlin)
para obter res de atributos:
fonte
Adicione isso ao xml da atividade na pasta de layout:
Torne a barra de ferramentas clicável, adicione-a ao método onCreate:
fonte
Possivelmente, uma maneira mais confiável de obter o ícone para cima do seu tema (se não estiver usando a barra de ferramentas como barra de ação):
Para transformar o atributo theme em um drawable, usei uma função de extensão:
fonte
Se você estiver usando o DrawerLayout com o ActionBarDrawerToggle , para mostrar o botão Voltar em vez do botão Menu (e vice-versa), será necessário adicionar esse código à sua atividade:
Portanto, quando você precisar exibir o botão Voltar em vez do botão Menu , chame showBackInToolbar (true) e, se precisar do botão Menu , chame showBackInToolbar (false) .
Você pode gerar uma seta para trás (ic_arrow_back_white_32dp) por aqui , procure arrow_back na seção Clipart (use 32dp padrão com preenchimento 8dp). Basta selecionar a cor desejada.
fonte
Você sempre pode adicionar um
Relative layout
ou umLinear Layout
no seuToolbar
e colocar uma visualização de imagem para o ícone voltar ou fechar o ícone em qualquer lugar da barra de ferramentas como desejarPor exemplo, usei o layout relativo na minha barra de ferramentas
E fica assim:
Você pode adicionar um clique de ouvinte nessa exibição de imagem em Atividade ou fragmento como este.
fonte
Com Kotlin, tornou-se:
Xml:
Na sua atividade: -
fonte
Se você estiver usando o JetPack Navigation.
Aqui está o layout para MainActivity
Configure sua barra de ferramentas em sua atividade como abaixo em onCreate () da sua classe Activity.
setupActionBarWithNavController (navController) Criará um botão voltar na barra de ferramentas, se necessário, e manipulará a funcionalidade backButton. Se você precisar escrever uma funcionalidade CustomBack, crie um callBack como abaixo no método fragment onCreate ()
Na documentação: https://developer.android.com/guide/navigation/navigation-custom-back
fonte
Se você estiver usando
androidx.appcompat.app.AppCompatActivity
apenas use:Em seguida, basta definir na
Manifest.xml
atividade pai.Em vez disso, se você estiver usando um
Toolbar
e quiser um comportamento personalizado, use:e em sua atividade:
fonte