Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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!