Menus
Menus are a common user interface component in many types of applications.
This guide shows how to create the three fundamental types of menus or action presentations on all versions of Android:
Options menu and app bar
The options menu
is the primary collection of menu items for an activity. It's where you should place actions that have a global impact on the app, such as "Search," "Compose email," and "Settings."
Context menu and contextual action mode
A context menu is a floating menu
that appears when the user performs a long-click on an element. It provides actions that affect the selected content or context frame.
Popup menu
A popup menu displays a list of items in a vertical list that's anchored to the view that invoked the menu.
Android Option Menu Example
Defining a Menu in XML
It contains three items as show below. It is created automatically inside the res/menu directory.
menu with the following elements:
<menu>
- Defines a
Menu
, which is a container for menu items. A <menu>
element must be the root node for the file and can hold one or more <item>
and<group>
elements.
<item>
- Creates a
MenuItem
, which represents a single item in a menu. This element may contain a nested <menu>
element in order to create a submenu.
<group>
- An optional, invisible container for
<item>
elements. It allows you to categorize menu items so they share properties such as active state and visibility. For more information, see the section about Creating Menu Groups.
<menu xmlns:androclass="http://schemas.android.com/apk/res/android" > <item android:id="@+id/item1"
android:title="Item 1"/>
<item android:id="@+id/item2"
android:title="Item 2"/>
<item android:id="@+id/item3"
android:title="Item 3"/>
</menu>
More Details
Write a Program to create menu with three menu items
Example
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.root.myapplication.MainActivity">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Menu Program" />
</RelativeLayout>
main.xml //main.xml file in res/menu
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item1" android:title="item1" />
<item android:id="@+id/item2" android:title="item2" />
<item android:id="@+id/item3" android:title="item3" />
</menu>
MainActivity.java
package com.example.root.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main,menu);
return true;
}
@Override public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.item1) {
Toast.makeText(getApplicationContext(), "First Item Selected!",
Toast.LENGTH_SHORT).show();
}
if (id == R.id.item2) {
Toast.makeText(getApplicationContext(), "Second Item Selected!", Toast.LENGTH_SHORT).show();
}
if (id == R.id.item3) {
Toast.makeText(getApplicationContext(), "Third Item Selected!",
Toast.LENGTH_SHORT).show();
}
return true;
}
}
Problem - res/menu and res/xml are not there
|
If it is in android studio 2.1.1, to create a res/menu folder follow these steps.
right click on res -> new -> Android resource directory -> change the resource type to 'menu' in the dropdown menu -> click ok
to create menu file in menu folder right click on menu folder -> new -> menu resource file ->give the file name -> click ok.
|