Solucionado (ver solução)
Solucionado
(ver solução)
14
respostas

Menu não aparece

Olá, bom dia!

Como eu faço para exibir o menu na parte superior da tela? Segue o código:

<?xml version="1.0"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText
            android:id="@+id/formulario_nome"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Nome" />

        <EditText
            android:id="@+id/formulario_endereco"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Endereço" />


        <EditText
            android:id="@+id/formulario_telefone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Telefone" />

        <EditText
            android:id="@+id/formulario_site"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Site" />

        <RatingBar
            android:id="@+id/formulario_nota"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:max="10"
            android:numStars="5"/>

    </LinearLayout>
</ScrollView>

No meu celular e na própria tela do preview, não está sendo exibida. Com isso, não consigo clicar no visto, para concluir o formulário. Obrigado!

14 respostas

Boa tarde,

Na activity, você está extendo de qual classe?

Boa tarde Rodrigo, poderia postar o código do menu.xml?

Você deve implementar o método onCreateOptionsMenu na Activity que deseja usar o menu.

Por exemplo:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_cadastro, menu);
        return super.onCreateOptionsMenu(menu);
    }

E um exemplo do arquivo menu_cadastro.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_cadastro_salvar"
        app:showAsAction="always"
        android:title="Salvar" />

    <item
        android:id="@+id/menu_cadastro_cancelar"
        android:title="Cancelar"/>

</menu>

ayrtonkrizan, boa tarde! Estou extendendo nas 2 activities AppCompatActivity.

Marcos, estou utilizando na FormularioActivity da seguinte forma:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater =  getMenuInflater();
        inflater.inflate(R.menu.menu_formulario, menu);
        return super.onCreateOptionsMenu(menu);
    }

E o arquivo menu_formulario.xml, está assim:

<menu 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"
    tools:context="br.com.alura.agenda.ListaAlunosActivity">


    <item
        android:id="@+id/menu_formulario_ok"
        android:title="OK"
        android:icon="@drawable/ic_confirmar"
        app:showAsAction="always"
        />

</menu>

Apenas postei o layout da tela, pois acredito que nele esteja faltando algo, para exibir o menu.

Por favor, me ajudem! =) Obrigado!

Experimente deixar o método assim:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_formulario, menu);
        return super.onCreateOptionsMenu(menu);
    }

Não surtiu efeito... Tem certeza que eu não precise inserir algo no layout? Obrigado mais uma vez!

Oi Rodrigo,

Apaga o contexto que está escrito no Menu...

Deve ser isso..

Deixa parecido com esse, só ajeita o nome dos seus arquivos.

<?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/formulario_menu_ok"
        android:title="Ok"
        android:icon="@drawable/ic_confirmar"
        app:showAsAction="always"
        />
</menu>

Olá Ayrtonkrizan. Efetuei as alterações, mas mesmo assim não exibe o menu na parte superior. Tem certeza que eu não precise inserir algo no layout? Obrigado mais uma vez!

Rodrigo boa tarde,

O Layout está certo... O meu está parecido inclusive...

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="225dp">
            <ImageView
                android:id="@+id/formulario_foto"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:src="@drawable/person"
                android:background="#00a8fc"
                />
            <Button
                android:id="@+id/formulario_botao_foto"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/ovalredcamera"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:layout_marginRight="16dp"
                />

        </RelativeLayout>
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/campo_nome"
            android:id="@+id/formulario_nome"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/campo_endereco"
            android:id="@+id/formulario_endereco"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/campo_telefone"
            android:id="@+id/formulario_telefone"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/campo_site"
            android:id="@+id/formulario_site"/>

        <RatingBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:max="10"
            android:numStars="5"
            android:id="@+id/formulario_nota"/>

    </LinearLayout>

</ScrollView>

Eu realmente não entendo, copiando e colando o código, mesmo assim o menu não aparece.

Opa Rodrigo,

Lembro que uma vez eu queria desativar essa barra e não conseguia... ai cheguei nesse caminho aqui -> res->values->styles.xml

E tinha que tirar o tema que tava aplicado lá...

No meu projeto esse arquivo ta desse jeito, compara com o seu... se não for isso já gastei todas minhas fichas rs...

<resources>

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

</resources>

Se você testar com um Smartphone ou Emulador que tenha o botão de menu (Botão Físico), o menu aparece?

Talvez não esteja usando ActionBar.

solução!

Marcos, mesmo no emulador, não aparecia! =/

Ayrton, neste arquivo styles.xml, encontrei esta tag:

<style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
</style>

Eu apenas consegui resolver o problema invertendo o true e false. Qualquer outra combinação a aplicação quebra. Removendo esta tag, resulta em erro também! De qualquer forma, me ajudaram muito! VALEU!

Então,

Foi isso que te disse... o tema que influencia... se fosse o que mandei ia funcionar igual!!

Mas ainda bem que deu certo aí!!

Sim, sim! Eu entendi , mas se quando eu tiro a tag que eu enviei, dá erro no build do projeto.

De qualquer forma, valeu!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software