Android Action Bar

2019-02-06 18:24发布

问题:

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 the actions on click of the buttons from the action bar.

Is there any open source lib of this sort or can someone help me how to start on building the same.

回答1:

There is ActionBarSherlock and android-actionbar.



回答2:

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.



回答3:

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.



回答4:

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);

        }

    }



}