Sunday, 15 September 2013

Context Menu

Lets create a CONTEXT MENU. This menu appears n screen when you long click an UI component.

To begin you need to make a UI component on whose long click the context menu would appear.

<TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="145dp"
        android:text="Context Menu"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="18dp"
        android:text="Menu which appears on long click"
        android:textAppearance="?android:attr/textAppearanceMedium" />


Then create 2 menu items to be shown in the context menu.

 <item
        android:id="@+id/item1"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Menu Item 1"/>

    <item
        android:id="@+id/item2"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Menu Item 2"/>


Now in the onCreate(), you need to register the component for the context menu after getting its reference from the layout file. And then write the code to make the menu working.

package com.codingredefined.androidcontextmenu;

import android.os.Bundle;
import android.app.Activity;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity 
{
TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) 
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView)findViewById(R.id.textView1);
registerForContextMenu(tv);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.main, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case R.id.item1:
Toast.makeText(this, "Menu Item 1 Selected", Toast.LENGTH_LONG).show();
break;
case R.id.item2:
Toast.makeText(this, "Menu Item 2 Selected", Toast.LENGTH_LONG).show();
break;
}
return true;
}
}



After completing the above mentioned steps, your output should look like...



Wednesday, 11 September 2013

Menu in Action Bar

Android Action Bar is same as that of Menu but the only difference is that in this the menu items appear on the action bar and not in  the menu.

Create new project having:
Application Name : AndroidMenu
Project Name : AndroidMenu
Package Name : com.codingredefined.androidmenu
Click NEXT


 Click NEXT
 You may change the icon of your app then click NEXT
 Click NEXT
 Click NEXT

 You may or may not change the code of the layout file as it has nothing to do with this example.
For those who want to change:

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Android Menu Item" />


 Now to create the menu items, goto menu file in the menu folder again in res folder and paste the following code:

<item
        android:id="@+id/item_1"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="item 1"/>

    <item
        android:id="@+id/item_2"
        android:orderInCategory="100"
        android:showAsAction="always"
        android:title="item 2"/>


Then in order to make the menu items working use the below code after the onCreate()

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case R.id.item_1:
Toast.makeText(this,"Menu Item 1",Toast.LENGTH_SHORT).show();
break;
case R.id.item_2:
Toast.makeText(this,"Menu Item 2",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return true;
}

Pasting the above code will produce a toast on your emulator screen as shown in below figures.

 After pasting the code run your application and observe the output

Monday, 9 September 2013

Menu

Create new project having:
Application Name : AndroidMenu
Project Name : AndroidMenu
Package Name : com.codingredefined.androidmenu
Click NEXT
 Click NEXT
 You may change the icon of your app then click NEXT
 Click NEXT
 Click NEXT
 You may or may not change the code of the layout file as it has nothing to do with this example.
For those who want to change:

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Android Menu Item" />

 Now to create the menu items, goto menu file in the menu folder again in res folder and paste the following code:

<item
        android:id="@+id/item_1"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="item 1"/>

    <item
        android:id="@+id/item_2"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="item 2"/>



Then in order to make the menu items working use the below code after the onCreate()

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case R.id.item_1:
Toast.makeText(this,"Menu Item 1",Toast.LENGTH_SHORT).show();
break;
case R.id.item_2:
Toast.makeText(this,"Menu Item 2",Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return true;
}

Pasting the above code will produce a toast on your emulator screen as shown in below figures.


 After pasting the code run your application and observe the output.