I am looking for an implementation of the ActionBar in Android 2.1 to 2.3.4 where i can dynamically set the contents of the action bar from the particular activity and also
There is ActionBarSherlock and android-actionbar.
Have a look at http://android.cyrilmottier.com/?p=240 - Greendroid.
If it doesn't fit your needs, I suggest creating your own "widget", just need some layouts and inflate the ActionBar programmatically.
package com.util;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBar.LayoutParams;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.android.volley.RequestQueue;
public class BaseActivity extends ActionBarActivity {
public View mCustomView;
public static SessionManager session;
public ProgressDialog pDialog;
public ConnectionDetector checkConnection;
RequestQueue queue;
AlertDialog alertDialog;
private boolean isActionBarEnable;
public Typeface font_bold, font_regular, font_light, font_thin;
public ImageView ivBack,ivHome,iv_history;
public TextView tvTitle;
public ProgressBar progressForWebView;
public BaseActivity() {
}
public BaseActivity(boolean isActionBarEnable) {
this.isActionBarEnable = isActionBarEnable;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
if (isActionBarEnable) {
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
LayoutInflater mInflater = LayoutInflater.from(this);
mCustomView = mInflater.inflate(R.layout.custom_actionbar, null);
ivBack = (ImageView) mCustomView.findViewById(R.id.custom_actionbar_iv_back);
iv_history = (ImageView) mCustomView.findViewById(R.id.custom_actionbar_iv_history);
ivHome = (ImageView) mCustomView.findViewById(R.id.custom_actionbar_iv_home);
tvTitle = (TextView) mCustomView.findViewById(R.id.custom_actionbar_title);
progressForWebView = (ProgressBar) mCustomView.findViewById(R.id.custom_actionbar_progressbar);
actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(mCustomView, new ActionBar.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
Toolbar parent = (Toolbar) mCustomView.getParent();
parent.setContentInsetsAbsolute(0, 0);
}
}
}
This question already has an accepted answer. But I was having some problems with SherlockActionBar implementation and searched more and found this. We can use ActionBar
below API level 11 following this official tutorial given at official Android.
Read this tutorial from Android's official site.
You just need to include android-support-v7-appcompat.jar
support jar in your project from your android-sdk-windows\extras\android\support\v7\appcompat\libs
path on your disk. Then you can use ActionBar below API 11 in Android.
Official Android Tutorial is here: Action Bar Android Official Sherlock bar was creating issues for me then I got this solution.