ActionBar的使用

使用ActionBar,需要3个步骤:
1、导入v7包,并与项目关联
2、继承ActionBarActivity
3、修改清单文件中的application的主题为android:theme="@style/Theme.AppCompat.XXX"


/*================================================ActionBar的一些常用方法===========================================================*/
	ActionBar actionBar = getSupportActionBar();// 得到actionBar
	
	actionBar.setLogo(R.drawable.ic_action_edit);// 设置logo,默认是logo优先
	actionBar.setIcon(R.drawable.ic_launcher);// 设置icon,默认是logo优先

	actionBar.setDisplayUseLogoEnabled(false);// 默认是true,默认是logo优先,若为false,则显示icon

	actionBar.setTitle("主标题");
	actionBar.setSubtitle("副标题");

	actionBar.setDisplayHomeAsUpEnabled(true);// 设置显示返回按钮

	// 显示/隐藏title部分
	actionBar.setDisplayShowTitleEnabled(true);// 默认是True,默认显示title

	// 显示/隐藏icon/logo部分
	actionBar.setDisplayShowHomeEnabled(true);// 默认是true,默认显示icon/logo

	// 如果title和icon都隐藏了,那么对应的返回按钮也没有了


/*================================================ActionBar中的按钮===========================================================*/
加载要在ActionBar中显示的按钮:
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return super.onCreateOptionsMenu(menu);
	}
	
对ActionBar的按钮设置点击事件,需要重写onOptionsItemSelected方法
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case android.R.id.home://此id是固定的,得到ActionBar的返回按钮
			finish();
			break;

		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	
/*================================================ActionBar的导航模式===========================================================*/
ActionBar的导航模式有2种:
1、list模式
	actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);//将ActionBar的导航模式改为List
	// 初始化数据
	final List<String> objects = new ArrayList<String>();
	objects.add("主页");
	objects.add("新闻");
	objects.add("娱乐");

	// 设置adapter
	ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
			android.R.layout.simple_list_item_1, objects);

	// 设置adapter和点击事件的处理
	actionBar.setListNavigationCallbacks(adapter,
			new OnNavigationListener() {

				@Override
				public boolean onNavigationItemSelected(int itemPosition,
						long itemId) {
					Toast.makeText(getApplicationContext(),
							"选中了" + objects.get(itemPosition), 0).show();
					return false;
				}
			});
			
2、tab模式
	actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//将ActionBar的导航模式改为Tab
	for (int i = 0; i < 5; i++) {
		final Tab tab = actionBar.newTab();//创建一个新的tab
		// 设置文字
		tab.setText("tab1" + i);//对tab设置显示文本
		// 设置图标
		tab.setIcon(R.drawable.ic_action_call);//设置tab显示的icon
		// tab的点击事件
		tab.setTabListener(new TabListener() {//设置tab的点击事件

			// 未选中的时候
			@Override
			public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {

			}

			// 选中的时候
			@Override
			public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
				Toast.makeText(getApplicationContext(), tab.getText(), 0)
						.show();
			}

			// 再次选中的时候
			@Override
			public void onTabReselected(Tab arg0, FragmentTransaction arg1) {

			}
		});

		actionBar.addTab(tab);//把创建并设置好的tab加到ActionBar中
	}
	
/*================================================ActionBar操作按钮部分===========================================================*/
点击ActionBar的按钮后,在ActionBar中显示搜索框:
	1、在menu目录中的ActionBar布局文件中添加一个按钮(item),加入2个属性(actionViewClass和showAsAction),这2个属性需要使用自定义空间
		<item xmlns:itheima="http://schemas.android.com/apk/res-auto"
			itheima:actionViewClass="android.support.v7.widget.SearchView"
			itheima:showAsAction="collapseActionView" />
	
	2、在activity中找到该探索按钮可以设置联想和对数据的处理方式
		case R.id.action_search:
		//找到searchView
		SupportMenuItem smi = (SupportMenuItem) item;//android sdk里面的MenuItem,转换成v4包中的SupportMenuItem
		SearchView actionView = (SearchView) smi.getActionView();
		
		Toast.makeText(getApplicationContext(), "action_search", 0).show();
		break;
		
注意:有actionViewClass和showAsAction这2个属性之后,效果就已经出来了。

/*================================================splite模式===========================================================*/
把tab导航放到界面最下方,在清单文件中设置该Activity即可:
	<activity
		android:name="com.itheima.actionbar.SplitActivity"
		android:uiOptions="splitActionBarWhenNarrow" >
		<meta-data
			android:name="android.support.UI_OPTIONS"
			android:value="splitActionBarWhenNarrow" />
	</activity>

/*================================================ActionBar的ActionMode模式===========================================================*/
效果:例如长按某段文字后,界面上方出现复制、粘贴等按钮
使用:在ActionBarActivity中有startSupportActionMode方法,可以直接呼出ActionMode

	startSupportActionMode(new Callback() {
		@Override
		public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {
			return false;
		}

		@Override
		public void onDestroyActionMode(ActionMode arg0) {

		}

		@Override
		public boolean onCreateActionMode(ActionMode mode, Menu menu) {//创建ActionMode
			getMenuInflater().inflate(R.menu.actionmode, menu);//加载ActionMode要显示的布局,文件的位置与编写与菜单的布局文件一致
			return true;// 为true才创建,为False被忽略(不显示)
		}

		@Override
		public boolean onActionItemClicked(ActionMode mode, MenuItem item) {//对布局文件中的按钮设置点击事件
			switch (item.getItemId()) {
			case R.id.action_mode_1:
				Toast.makeText(getApplicationContext(), "action_mode_1", 0)
						.show();
				break;
			case R.id.action_mode_2:
				Toast.makeText(getApplicationContext(), "action_mode_2", 0)
						.show();
				break;
			case R.id.action_mode_3:
				Toast.makeText(getApplicationContext(), "action_mode_3", 0)
						.show();
				break;

			default:
				break;
			}
			return false;
		}
	});

	
/*================================================menu(菜单)的布局文件===========================================================*/

编写如下:
	
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        xmlns:itheima="http://schemas.android.com/apk/res-auto"
        android:id="@+id/action_search"
        android:icon="@drawable/ic_action_search"
        android:orderInCategory="100"
        android:title="搜索"
        itheima:actionViewClass="android.support.v7.widget.SearchView"
        itheima:showAsAction="collapseActionView"/>
    <item
        xmlns:itheima="http://schemas.android.com/apk/res-auto"
        android:id="@+id/action_settings2"
        android:icon="@drawable/ic_action_mail"
        android:orderInCategory="100"
        android:title="@string/action_settings"
        itheima:showAsAction="always"/>
</menu>




注意:showAsAction和actionViewClass需要自定义的命名空间,如:xmlns:itheima="http://schemas.android.com/apk/res-auto",只要记得这样写就可以(itheima可以随便更换)
showAsAction的值:
always(一直显示,不管ActionBar的空间有余)
never(不显示,也不在更多按钮中显示)
ifRoom(有空间就显示,没空间就放到更多按钮中显示)
withText(显示时把title一起显示出来)
actionViewClass的值(到v7包的widget中找):
android.support.v7.widget.SearchView:在ActionBar显示搜索框
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值