Android ActionBar 一步一步分析

1.Action Bar 介绍

我们能在应用中看见的actionbar一般就是下图的样子,比如快图应用

1.App icon 应用的图标,左侧带应用相当于back返回键

2.ViewControl

3.Action button 相当于普通的Button可以监听点击事件

4.Action overflow 三个点,相当于手机上的menu键,可以显示隐藏的action button

下面是一个简单的关于Action Bar的例子:

package com.example.demo_actionbarbasic;
import com.example.demo_actionbarbasic.R;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends Activity {
	private MenuItem menuItem = null;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		// 通过hilde()和show()方法可以控制actionbar的隐藏和显示
		// ActionBar actionBar = getActionBar();
		// actionBar.hide();
		// actionBar.show();
	}

	// 我们可以看到,actonbar的用法跟选项菜单是一样的
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case R.id.action_refresh:
			Toast.makeText(this, "Menu Item refresh selected",
					Toast.LENGTH_SHORT).show();
			break;
		case R.id.action_about:
			Toast.makeText(this, "Menu Item about selected", Toast.LENGTH_SHORT)
					.show();
			break;
		case R.id.action_edit:
			Toast.makeText(this, "Menu Item edit selected", Toast.LENGTH_SHORT)
					.show();
			break;
		case R.id.action_search:
			Toast.makeText(this, "Menu Item search selected",
					Toast.LENGTH_SHORT).show();
			break;
		case R.id.action_help:
			Toast.makeText(this, "Menu Item  settings selected",
					Toast.LENGTH_SHORT).show();
			break;
		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}
}

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/menu_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="settings"/>
    <item
        android:id="@+id/action_refresh"
        android:icon="@drawable/navigation_refresh"
        android:orderInCategory="101"
        android:showAsAction="ifRoom|withText"
        android:title="refresh"/>
    <item
        android:id="@+id/action_about"
        android:icon="@drawable/action_about"
        android:orderInCategory="101"
        android:showAsAction="ifRoom"
        android:title="about"/>
    <item
        android:id="@+id/action_search"
        android:icon="@drawable/action_search"
        android:orderInCategory="103"
        android:showAsAction="ifRoom"/>
    <item
        android:id="@+id/action_edit"
        android:icon="@android:drawable/ic_menu_edit"
        android:orderInCategory="105"
        android:showAsAction="ifRoom"
        android:title="edit"/>
    <item
        android:id="@+id/action_help"
        android:showAsAction="always"
        android:title="help"/>
    <item
        android:id="@+id/action_email"
        android:icon="@android:drawable/ic_dialog_email"
        android:orderInCategory="106"
        android:showAsAction="ifRoom"
        android:title="email"/>
</menu>

onCreateOptionsMenu()方法用来加载menu文件夹中定义的xml文件,用来显示action bar。onOptionsItemSelected()方法用来加入点击事件。

效果图:


         


左图的效果我们看到只能显示两个action button,由于屏幕的空间有限,其他的action button会被隐藏。横屏的时候我们可以显示4个,还有3个被隐藏起来了。当我们按手机上的更多键时可以显示出来关于action button的文字信息,一定要在item标签中加入title属性。


android:showAsAction="ifRoom"ifRomm表示有空间的时候显示。

android:showAsAction="always"表示总是显示

android:showAsAction="ifRoom|withText"有空间的时候同时显示title标题

其他属性可以自己试试。


2.显示3个点的更多action button

从上面的代码我们知道,即使我们横屏也显示不出全部action button。我们可以加入3个点的action button来用下拉显示的方式,显示跟多的action button。在网上的信息得知,只要你的手机有menu键actionbar就不会显示3个点的更多或者说3个点的menu按钮。从上面的代码我们知道,即使我们横屏也显示不出全部action button。我们可以加入3个点的action button来用下拉显示的方式,显示跟多的action button。在网上的信息得知,只要你的手机有menu键actionbar就不会显示3个点的更多或者说3个点的menu按钮。

private void getOverflowMenu() {
 
     try {
        ViewConfiguration config = ViewConfiguration.get(this);
        Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"
  • 1
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值