ActionBar简介

Action bar是一个标识应用程序和用户位置的窗口功能,并且给用户提供操作和导航模式。在大多数的情况下,当你需要突出展现用户行为或全局导航的activity中使用action bar,因为action bar能够使应用程序给用户提供一致的界面,并且系统能够很好根据不同的屏幕配置来适应操作栏的外观。你能够用ActionBar的对象的API来控制操作栏的行为和可见性,这些API被添加在Android3.0(API 级别 11)中。
      Action bar的主要目的是:
        1.  提供一个用于识别应用程序的标示和用户的位置的专用空间。
         这个空间的左边是应用的图标或logo,以及Activity的标题。但是,如果是像当前选择的标签这样的标识当前View对象的导航标签,你可以选择删除Activity的标题。
        2.  在不同的应用程序之间提供一致的导航和视觉体验。
        Action bar提供了用于Fragment间切换的内置导航标签。它还提供了一个用于替换导航模式或优化当前视觉效果(如按照不同条件排序的列表)的下拉列表。
        3.  突出Activity的关键操作(如“搜索”、“创建”、“共享”等),并且在可预见的方法内给用户提供快捷的访问。
       对于关键的用户操作,你能够通过把选项菜单项作为操作项直接放到操作栏中,从而提供快捷的访问。操作项目还能提供一个操作窗口,这个窗口给更直接的操作行为提供一个嵌入的窗口部件。没有改进成操作项的菜单项在溢出菜单中还是有效的,用户既可以使用设备上的菜单按钮(设备上有按钮的时候),也可以使用操作栏中的溢出菜单按钮(当设备上不包含菜单按钮时)来显示这些操作项目。


下面上一个简单ActionBar的代码
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.Window;
import android.widget.Button;
import android.widget.Toast;

public class FirstActionBarActivity extends Activity
{
	private Button hideShowActionBar;
    
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
		setContentView(R.layout.activity_first_action_bar);
		hideShowActionBar = (Button) findViewById(R.id.button_hide_show_actionbar);
	
	}

	public void onClick_HideShowActionBar(View view)
	{
		if (getActionBar() == null)
			return;
		if (getActionBar().isShowing()){
			getActionBar().hide();
			hideShowActionBar.setText("显示ActionBar");
		}else{
			getActionBar().show();
			hideShowActionBar.setText("隐藏ActionBar");
		}
	}

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

	@Override
	public boolean onOptionsItemSelected(MenuItem item)  
	{
		Toast.makeText(this, item.getTitle(), Toast.LENGTH_LONG).show();
		return super.onOptionsItemSelected(item);
	}

}


layout : activity_first_action_bar.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button_hide_show_actionbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="onClick_HideShowActionBar"
        android:text="隐藏ActionBar" />

</LinearLayout>


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

    <item
        android:id="@+id/menu_save"
        android:icon="@drawable/save"
        android:showAsAction="ifRoom|withText"
        android:title="保存"/>
    <item
        android:id="@+id/menu_open"
        android:icon="@drawable/open"
        android:showAsAction="ifRoom"
        android:title="打开"/>
    <item
        android:id="@+id/menu_search"
        android:icon="@drawable/search"
        android:showAsAction="always"
        android:title="保存"/>
   
</menu>

该例子会在附件中有源代码。

介绍一个item中的android:showAsAction选项:
这个属性可接受的值有:
  1、always:这个值会使菜单项一直显示在Action Bar上。
  2、ifRoom:如果有足够的空间,这个值会使菜单项显示在Action Bar上。
  3、never:这个值使菜单项永远都不出现在Action Bar上。
  4、withText:这个值使菜单项和它的图标,菜单文本一起显示。
    android:showAsAction="always|collapseActionView表示可扩展


AndroidManifest.xml中<activity中配置 android:uiOptions="splitActionBarWhenNarrow"
会将ActionBar放到底下的界面中







猜你喜欢

转载自18767136122.iteye.com/blog/2098563