android ActionBar的使用

Action Bar主要功能包含:

1. 显示选项菜单

2. 提供标签页的切换方式的导航功能,可以切换多个fragment.

3.  提供下拉的导航条目.

4. 提供交互式活动视图代替选项条目

5. 使用程序的图标作为返回Home主屏或向上的导航操作。

首先说下,使用OverFlow的时候需要在onCreate()函数中调用如下方法:

private void forceShowOverflowMenu() {
    try {
        ViewConfiguration config = ViewConfiguration.get(this);
        Field menuKeyField = ViewConfiguration.class
                .getDeclaredField("sHasPermanentMenuKey");
        if (menuKeyField != null) {
            menuKeyField.setAccessible(true);
            menuKeyField.setBoolean(config, false);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

注:此处未使用这种实现方式,本应用中使用的PopupMen

以下是自己开发的项目所使用到的ActionBar:

public class ShopOrderActivity extends ActionBarActivity implements
		OnTouchListener, OnMenuItemClickListener{
	private Toast mToast;
	private Context context;
	/** AlertDialog中输入反馈框 */
	private EditText et_FeedBack;
	private PopupMenu popupMenu;

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

		//设置Home图标区域
//		requestWindowFeature(Window.FEATURE_LEFT_ICON);
//		setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, resId);

		this.context = this;
		mToast = Toast.makeText(this, "", Toast.LENGTH_LONG);

		initActionBar();
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.actionbar_menu, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.actionbar_overflow) {
			if (popupMenu == null) {
				popupMenu = new PopupMenu(this,
						findViewById(R.id.actionbar_overflow));
				popupMenu.inflate(R.menu.actionbar_pop);
				popupMenu.setOnMenuItemClickListener(this);
			}
			popupMenu.show();
			return true;
		} else if (<pre name="code" class="java">public class ShopOrderActivity extends ActionBarActivity implements
		OnTouchListener, OnMenuItemClickListener{
	private Toast mToast;
	private Context context;
	/** AlertDialog中输入反馈框 */
	private EditText et_FeedBack;
	private PopupMenu popupMenu;

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

		//设置Home图标区域
//		requestWindowFeature(Window.FEATURE_LEFT_ICON);
//		setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, resId);

		this.context = this;
		mToast = Toast.makeText(this, "", Toast.LENGTH_LONG);

		initActionBar();
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {

		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.actionbar_menu, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.actionbar_overflow) {
			if (popupMenu == null) {
				popupMenu = new PopupMenu(this,
						findViewById(R.id.actionbar_overflow));
				popupMenu.inflate(R.menu.actionbar_pop);
				popupMenu.setOnMenuItemClickListener(this);
			}
			popupMenu.show();
			return true;
		} else if (id == android.R.id.home) {
			finish();
		} else if (id == R.id.new_order_bar) {
			showTip("显示红点");
		}
		return super.onOptionsItemSelected(item);
	}

	@Override
	public boolean onMenuItemClick(MenuItem arg0) {
		Intent intent;
		switch (arg0.getItemId()) {
		case R.id.actionbar_settings:
			intent = new Intent(this, SettingsActivity.class);
			startActivity(intent);
			break;
		case R.id.historyOrder:
			intent = new Intent(this, HistoryOrderActivity.class);
			startActivity(intent);
			break;
		case R.id.logout:
			AlertDialog.Builder builder = new AlertDialog.Builder(
					ShopOrderActivity.this);
			builder.setTitle("确定要退出吗?");
			builder.setPositiveButton("确定",
					new DialogInterface.OnClickListener() {
						@Override
						public void onClick(DialogInterface dialog, int which) {
							showTip("退出登录!");
						}
					});
			builder.setNegativeButton("取消",
					new DialogInterface.OnClickListener() {

						@Override
						public void onClick(DialogInterface dialog, int which) {
							dialog.dismiss();
						}
					});
			builder.create().show();
			break;
		}
		return false;
	}

	/**
	 * 初始化ActionBar
	 */
	private void initActionBar() {
		ActionBar actionBar = getSupportActionBar();
		actionBar.setTitle("抢单");
		actionBar.setDisplayHomeAsUpEnabled(true);
		actionBar.setHomeButtonEnabled(true);
		// actionBar.setIcon(R.drawable.back_menu);
		// Drawable background = (Drawable) getResources()
		// .getDrawable(R.drawable.top_bg);
		// getActionBar().setBackgroundDrawable(background);
		setTitleColor(this.getResources().getColor(R.color.green));// 没反应
	}

	/**
	 * 显示Toast
	 *
	 * @param str
	 */
	public void showTip(final String str) {
		runOnUiThread(new Runnable() {
			@Override
			public void run() {
				mToast.setText(str);
				mToast.show();
			}
		});
	}
}

id == android.R.id.home

当操作左上角icon图标的时候实现的功能是返回,配置清单需要设置:

<activity

android:name="com.shop.order.ShopOrderActivity"

android:launchMode="singleTop"

android:theme="@style/Theme.AppCompat.Light.DarkActionBar" >

</activity>

actionbar_menu的代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto" >

    <item
        android:id="@+id/new_order_bar"
        android:title="@string/new_order"
        android:icon="@drawable/ic_launcher"
        app:showAsAction="ifRoom|withText"/>

    <item
        android:id="@+id/actionbar_overflow"
        android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_dark"
        android:title="@string/pop"
        app:showAsAction="ifRoom|withText"/>
</menu>

注意:app:showAsAction="ifRoom|withText"如果写成android:showAsAction="ifRoom|withText"则不会在actionbar显示,当操作手机右下角的menu键时才会显示

actionbar_pop的代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/actionbar_settings"
        android:title="@string/settings"/>
    <item
        android:id="@+id/historyOrder"
        android:title="@string/historyorder"/>
    <item
        android:id="@+id/logout"
        android:title="@string/logout"/>
</menu>

android ActionBar的使用,布布扣,bubuko.com

时间: 2024-08-06 07:35:40

android ActionBar的使用的相关文章

Android ActionBar完全解析,使用官方推荐的最佳导航栏(下)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文. http://developer.android.com/guide/topics/ui/actionbar.html 限于篇幅的原因,在上篇文章中我们只学习了ActionBar基础部分的知识,那么本篇文章我们将接着上一章的内容继续学习,探究一下ActionBar

Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文. http://developer.android.com/guide/topics/ui/actionbar.html Action Bar是一种新増的导航栏功能,在Android 3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用

详解Android ActionBar之二:ActionBar添加Tabs标签和下拉导航

本节主要讲解ActionBar如何添加Tabs标签和下拉导航. 一.添加标签 Tabs 在ActionBar中实现标签页可以实现android.app.ActionBar.TabListener ,重写onTabSelected.onTabUnselected和onTabReselected方法来关联Fragment.代码如下: Java代码 private class MyTabListener implements ActionBar.TabListener { private TabCon

Android ActionBar的基本用法

本文翻译了这篇文章:Using the Android action bar (ActionBar) - Tutorial 1.ActionBar的简介ActionBar位于Activity的顶部,可用来显示activity的标题.Icon.Actions和一些用于交互的View.它也可被用于应用的导航.ActionBar 是在Android 3.0(API 11)中加入到SK中的,想在低版本中使用ActionBar有两种选择:使用http://actionbarsherlock.com 或使用

【转】Android ActionBar完全解析,使用官方推荐的最佳导航栏(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/18234477 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文. http://developer.android.com/guide/topics/ui/actionbar.html Action Bar是一种新増的导航栏功能,在Android 3.0之后加入到系统的API当中,它标识了用户当前操作界面的位置,并提供了额外的用

更改android actionbar tab文字颜色

1 在res/values/colors.xml <color name="text_tab_selected">#000000</color> <color name="text_tab_unselected">#886C2A</color> 2 /res/color 定义文件 tab.xml <?xml version="1.0" encoding="utf-8"?&g

Android ActionBar下拉选项

package com.example.actionBarTest.actionBarList; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.SpinnerAdapter; import com.ex

Android ActionBar 关于tab的应用 以及 TabListener的方法详解

actionBar的tab标签应用以及TabListener的方法详解 package com.example.actionBarTest.actionBarTab; import android.app.*; import android.os.Bundle; import com.example.actionBarTest.R; import java.util.ArrayList; import java.util.List; /** * Created by Heyiyong on 20

Android ActionBar与ViewPager合用

内容可以左右滑动,因为使用了ViewPager(我这里用了V4包) view_pager_main.xml <?xml version="1.0" encoding="utf-8"?> <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/viewPag