【Android知识点精讲】(5)ActionBar详解

本文地址:http://blog.csdn.net/scarthr/article/details/42124109

ActionBar也是Android3.0之后推出的新功能,它取代了原来Activity的标题栏,我们可以使用它做好多事情。

一 ActionBar简介

显示ActionBar:getActionBar().hide()

隐藏ActionBar:getActionBar().show()

创建ActionBar是在menu文件夹中创建布局文件main.xml

其中showAsAction有几个属性需要注意一下:

never:设置这个还是和以前从底部弹出菜单一样。

ifRoom:当ActionBar放置不下时,显示在底部菜单。

always:显示在右上角ActionBar位置。

withText:菜单显示文字。

collapseActionView:和展开、收缩有关的设置。

一般常用的使用ifRoom|withText。

菜单menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.thr.testactionbar.MainActivity" >

    <item
        android:id="@+id/item1"
        android:actionViewClass="android.widget.EditText"
        android:icon="@drawable/ic_launcher"
        android:orderInCategory="100"
        android:showAsAction="always|collapseActionView"
        android:title="编辑菜单"/>
    <item
        android:id="@+id/item2"
        android:actionLayout="@layout/menu_text"
        android:icon="@drawable/ic_launcher"
        android:orderInCategory="100"
        android:showAsAction="withText|always|collapseActionView"
        android:title="文字菜单"/>
    <item
        android:id="@+id/item3"
        android:actionLayout="@layout/menu_clock"
        android:icon="@drawable/ic_launcher"
        android:orderInCategory="100"
        android:showAsAction="always|collapseActionView"
        android:title="时钟菜单"/>
    <item
        android:id="@+id/item4"
        android:actionViewClass="android.widget.SearchView"
        android:icon="@drawable/ic_launcher"
        android:orderInCategory="100"
        android:showAsAction="always|collapseActionView"
        android:title="搜索菜单"/>

</menu>
然后在Activity中复写onCreateOptionMenu和onOptionsItemSelected方法即可:

package com.thr.testactionbar;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;

public class MainActivity extends Activity {

	private boolean isActionBarShow = true;

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

		findViewById(R.id.btn).setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				if (isActionBarShow) {
					isActionBarShow = !isActionBarShow;
					getActionBar().hide();
				} else {
					isActionBarShow = !isActionBarShow;
					getActionBar().show();
				}
			}
		});

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		MenuInflater menuInflater = getMenuInflater();
		menuInflater.inflate(R.menu.main, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		Toast.makeText(this, "你点击了" + item.getTitle(), Toast.LENGTH_SHORT)
				.show();
		return super.onOptionsItemSelected(item);
	}

}

二 上下两分的ActionBar

在Manifest中app节点下添加:

        android:uiOptions="splitActionBarWhenNarrow" 
即可实现上下两分的ActionBar,这是什么意思呢?就是当顶部能放下所有菜单的时候就显示在顶部,放不下所有菜单的时候就统一挪到底布,效果图:



三 收缩和展开的ActionView

我们只要在menu.xml文件中设置了 showAsAction的 collapseActionView属性,那么在点击菜单的时候就会出现收缩和展开的动画效果:
此时还需要设置actionViewClass或者actionLayout指定当展开时显示的内容。
actionViewClass是设置调用的类名,我们可以指定系统的如:
        android:actionViewClass="android.widget.EditText"
actionLayout可以指定我们自己创建的布局文件。
要想监听我们的ActionBar是否展开收缩可以实现OnActionExpandListener接口,它有两个方法onMenuItemActionCollapse收缩和onMenuItemActionExpand展开。

这里顺带提一下关于SearchView的使用:
SearchView可是使用setOnQueryTextListener监听输入内容和搜索事件,使用setSubmitButtonEnabled(true),来控制是否显示提交按钮。



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值