Quero usar em ToolBar
vez de ActionBar
, mas não me mostre o menu na barra de ferramentas !!! desejo definir o menu, como os botões Atualizar ou ConfiguraçõesActionBar
.
Código da barra de ferramentas.xml:
<?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:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:navigationContentDescription="@string/abc_action_bar_up_description"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:title="Main Page"
android:gravity="center"/>
Código MainPage.java:
public class MainPage extends AppCompatActivity {
private Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_page);
toolbar = (Toolbar) findViewById(R.id.main_toolbar);
setSupportActionBar(toolbar);
if (getSupportActionBar() != null) {
getSupportActionBar().setTitle("Main Page");
}
toolbar.setSubtitle("Test Subtitle");
toolbar.inflateMenu(R.menu.main_manu);
}
}
código main_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_main_setting"
android:icon="@drawable/ic_settings"
android:orderInCategory="100"
app:showAsAction="always"
android:actionLayout="@layout/toolbar"
android:title="Setting" />
<item
android:id="@+id/menu_main_setting2"
android:icon="@drawable/ic_settings"
android:orderInCategory="200"
app:showAsAction="always"
android:actionLayout="@layout/toolbar"
android:title="Setting" />
</menu>
Como resolver esse problema e mostrar o menu no Toolbar
? obrigado todos queridos <3
Android Studio
e verifique. `ToolBar 'não deve ser uma entidade independente.Respostas:
apenas substitua onCreateOptionsMenu como este em seu MainPage.java
fonte
Não use setSupportActionBar (barra de ferramentas)
Eu não sei por que, mas isso funciona para mim.
Para o item de menu, clique em fazer isso
fonte
Aqui está uma resposta completa como referência para futuros visitantes. Eu costumo usar uma barra de ferramentas de suporte, mas funciona bem de qualquer maneira.
1. Faça um menu xml
Isso vai entrar
res/menu/main_menu
.res
pasta e escolha Novo> Arquivo de recursos Android .main_menu
o nome do arquivo.Cole o seguinte conteúdo para começar.
Você pode clicar com o botão direito
res
e escolher Novo ativo de imagem para criar oic_add
ícone.2. Inflar o menu
Em sua atividade, adicione o seguinte método.
3. Lidar com cliques de menu
Também em sua atividade, adicione o seguinte método:
Leitura adicional
fonte
Você precisa substituir este código em sua atividade:
e defina sua barra de ferramentas assim:
fonte
Você também precisa disso para implementar alguma ação em todas as opções do menu.
fonte
Embora eu concorde com essa resposta, pois tem menos linhas de código e funciona:
Como definir o menu para barra de ferramentas no Android
Minha sugestão seria sempre iniciar qualquer projeto usando o Android Studio Wizard. Nesse código você encontrará alguns estilos: -
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
e o uso é:
Devido a
no action bar theme
declarado emstyles.xml
, que se aplica aoMain Activity
emAndroidManifest.xml
, não há exceções, então você tem que verificar lá.Toolbar
não é uma entidade independente, é sempre uma visão filha e,AppBarLayout
novamente, é filha deCoordinatorLayout
.AMBOS:
Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);
E:
Como definir o menu para barra de ferramentas no Android
IRÁ FUNCIONAR.
Happy Coding :-)
fonte
Em sua atividade, substitua este método.
Isso vai aumentar seu menu abaixo:
fonte
No meu caso, estou usando um AppBarLayout com um CollapsingToolbarLayout e o menu estava sempre sendo rolado para fora da tela, resolvi meu problema trocando android: actionLayout no XML do menu para o id da barra de ferramentas. Espero que possa ajudar pessoas na mesma situação!
activity_main.xml
main_menu.xml
fonte
Solução simples para isso foi a criação
showAsAction
dealways
nomenu.xml
no res / Menufonte
res / layout / drawer_menu
toolbar.xml
fonte
Bem, você precisa definir a barra de ação de suporte setSupportActionBar (); e passe sua variável, assim:
setSupportActionBar(toolbar);
fonte
Em XML, adicione uma linha dentro
<Toolbar/>
No arquivo java, substitua este:
com isso:
fonte
Você ainda pode usar a resposta fornecida usando Toolbar.inflateMenu mesmo enquanto usa setSupportActionBar (barra de ferramentas).
Tive um cenário em que tive que mover a funcionalidade de configuração da barra de ferramentas para uma classe separada, fora da atividade, que por si só não sabia do evento onCreateOptionsMenu.
Então, para implementar isso, tudo que eu tive que fazer foi esperar que a Barra de Ferramentas fosse desenhada antes de chamar inflateMenu fazendo o seguinte:
Pode não ser considerado muito limpo, mas ainda assim dá conta do recado.
fonte