Monday, May 18, 2015

How to use ActionBar in Android

Table of contents
  1. Android ActionBar Example
    • getActionBar()
    • ActionBar.setTitle()
    • ActionBar.setBackgroundDrawable [background color]
    • Menu Resource
    • onCreateOptionsMenu()
    • onOptionsItemSelected()
    • Menu Item Icon [ActionBar Icon]

1. Android ActionBar Example

activity_main.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/rl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp"
    tools:context=".MainActivity"
    android:background="#ffffff"
    >
    <ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
</RelativeLayout>
res/menu/toolbar_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <!--
        Icon Size
        HDPI - 48*48
        MDPI - 32*32
        XHDPI - 64*64
        XXHDPI - 92*92
    -->
    <item
        android:id="@+id/action_elephant"
        android:title="Elephant"
        android:icon="@drawable/elephant"
        android:showAsAction="always|withText"
        />
    <item
        android:id="@+id/action_dog"
        android:title="Dog"
        android:icon="@drawable/dog"
        android:showAsAction="ifRoom|withText"
        />
    <item
        android:id="@+id/action_cat"
        android:title="Cat"
        android:icon="@drawable/cat"
        android:showAsAction="ifRoom"
        />
    <item
        android:id="@+id/action_giraffe"
        android:title="Giraffe"
        android:icon="@drawable/giraffe"
        android:showAsAction="ifRoom"
        />
</menu>
MainActivity.java

package com.cfsuman.me.androidcodesnippets;

/*
    compileSdkVersion 22
    minSdkVersion 21
    targetSdkVersion 22
 */

import android.app.ActionBar;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.app.Activity;
import android.view.MenuItem;
import android.widget.ImageView;
import android.view.Menu;
import android.view.MenuInflater;

public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Get the app ActionBar
        ActionBar ab = getActionBar();

        //Set the title of Actionbar
        ab.setTitle("Action Bar....");

        // Set action bar background color as drawable
        ab.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FFFF5A47")));
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        // Inflate the menu item for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.toolbar_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item){
        // Get ImageView reference from XML layout
        ImageView iv = (ImageView) findViewById(R.id.iv);
        // Handle presses on the action bar items
        switch (item.getItemId()) {
            // Change the ImageView image source depends on menu item click
            case R.id.action_elephant:
                iv.setImageResource(R.drawable.elephant_big);
                return true;
            case R.id.action_dog:
                iv.setImageResource(R.drawable.dog_big);
                return true;
            case R.id.action_cat:
                iv.setImageResource(R.drawable.cat_big);
                return true;
            case R.id.action_giraffe:
                iv.setImageResource(R.drawable.giraffe_big);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
More android examples