Android – Utilizando o item do menu showAsAction com appcompat library v7

 

Atualmente para criarmos uma actionbar como mostra na figura acima precisamos de uma api minima v11, atravéz da appcompat libary v7 podemos utilizar a action bar em versões inferiores do android. O item do menu que nos permite incluir o icone na actionbar é o showAsAction com o valor “ifRoom” (recomendado pelo Android).

Tendo como principio que nosso projeto já tenha a appcompat libary v7, para utilizar do recurso deveremos fazer realizar os seguintes passos: Continue reading

Android – Criando Menus de opções (Creating an Options Menu – onCreateOptionMenu)

options menu

 

O menu de opções é onde você deve incluir ações e outras opções que são relevantes para o contexto da atividade atual, como “Atualizar”, “Editar” e “Configurações”.

Para todos os tipos de menu o Android fornece um formato XML padrão para definir os itens. Em vez de construir um menu no código de sua atividade, você deve definir um menu e todos os seus itens em um XML. Você então infla o recurso menu (carregá-lo como um Menu de objeto) em sua atividade.

O recurso de menu em XML é uma boa prática por algumas razões:

  • É mais fácil de visualizar a estrutura do menu em XML.
  • Ele permite que você crie configurações do menu alternativas para diferentes versões da plataforma, tamanhos de tela e outras configurações, aproveitando os recursos do aplicativo.

Para definir o menu, crie um arquivo XML dentro do seu projeto na seguinte pasta res/menu/ (se a pasta menu não estiver criada, crie)

O XML de menu segue alguns padrões que podem ser observados com mais atenção AQUI (Developers – Menu). Abaixo segue um exemplo aonde vamos criar dois menus, um na ActionBar e o outro fora da ActionBar.

<?xml version="1.0" encoding="UTF-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_delete"
          android:icon="@android:drawable/ic_menu_delete"
          android:title="@string/menu_delete"
          android:showAsAction="ifRoom"/>
    <item android:id="@+id/menu_edit"
          android:icon="@android:drawable/ic_menu_edit"
          android:title="@string/menu_edit" />
</menu>

Como visto acima cada item é um menu, veja o que cada atributo de “item” pode fazer:

android:id A ID do recurso que é exclusivo para o item, o que permite que o aplicativo ser capaz de reconhecer o item quando o usuário seleciona-lo.

android:icon Uma referência a um drawable para usar como ícone do item.

android:title Uma referência a uma string para usar como título do item.

android:showAsAction Especifica quando e como este item deve aparecer como um item de ação na ActionBar.

Onde os itens em seu menu de opções aparecerá na tela depende da versão para a qual você desenvolveu sua aplicação.

Na API 10 ou inferior o menu de opções sempre aparecera no rodapé do layout.

API 10

API 10

Na API 11 ou superior você tem a opção de inseri-las na action bar, por padrão essa opção não é ativada, caso queira, marque a tag android:showAsAction=”ifRoom” no seu item.

API 11

API 11

 

Para especificar o menu de opções para uma atividade você deve substituir o método onCreateOptionsMenu() ao substitui-lo você deve inflar o layout desejado através da classe MenuInflate.

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

Para verificarmos qual item foi selecionado vamos substituir o método onOptionsItemSelected(MenuItem item):

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.menu_edit:
                Toast.makeText(this, "MENU EDIT", Toast.LENGTH_LONG).show();
                return true;
            case R.id.menu_delete:
                Toast.makeText(this, "MENU DELETE", Toast.LENGTH_LONG).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

Veja o resultado:

Exemplo OptionsMenu

Exemplo OptionsMenu

 

Projeto de Exemplo:(AQUI) DropBox

 

Fonte da imagem: http://goo.gl/Enpf4P
Fonte: http://goo.gl/ZRiA