Android开发学习之ActionBar深入

浏览:
字体:
发布时间:2013-12-12 14:51:10
来源:

在 上一篇文章中,我们实现了ActionBar的简单功能,并对ActionBar有了一定的了解。事实上,ActionBar提供了三种导航方式,分别是标准、Tab、Spinner。那么今天我们就来学习后面两种。首先来看看最终实现的效果吧!

////

一、Tab模式下的ActionBar,布局代码如下:

    
主要逻辑代码如下:

package com.Android.ActionBarTab;import android.os.Bundle;import android.app.ActionBar;import android.app.ActionBar.Tab;import android.app.ActionBar.TabListener;import android.app.Activity;import android.app.FragmentTransaction;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity implements TabListener {	private ActionBar mActionBar;	private TextView tv;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		tv=(TextView)findViewById(R.id.TabText);		//取得ActionBar		mActionBar=getActionBar();		//以Tab方式导航		mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);		//禁用ActionBar标题		mActionBar.setDisplayShowTitleEnabled(false);		//禁用ActionBar图标		mActionBar.setDisplayUseLogoEnabled(false);		//禁用ActionBar返回键		mActionBar.setDisplayShowHomeEnabled(false);		//添加Tab		for(int i=0;i<4;i++)		{			ActionBar.Tab tab=mActionBar.newTab();			tab.setText("选项卡"+i);			tab.setTabListener(this);			mActionBar.addTab(tab);		}	}	@Override	public boolean onCreateOptionsMenu(Menu menu) {		// Inflate the menu; this adds items to the action bar if it is present.		getMenuInflater().inflate(R.menu.main, menu);		return true;	}	@Override	public void onTabReselected(Tab arg0, FragmentTransaction arg1) {		// TODO 自动生成的方法存根			}	@Override	public void onTabSelected(Tab tab, FragmentTransaction arg1) 	{		tv.setText("这里是"+tab.getText());	}	@Override	public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {		// TODO 自动生成的方法存根			}}

注意,这里并没有对这个例子进行深化,其实结合Fragment我们可以做出更棒的效果来,这点先卖个关子,后面有时间的话会为大家分享的

二、Spinner模式下的ActionBar,布局如下:

    

主要的逻辑代码如下:

package com.Android.ActionBarWithView;import android.os.Bundle;import android.app.ActionBar;import android.app.ActionBar.OnNavigationListener;import android.app.Activity;import android.view.Menu;import android.view.MenuItem;import android.widget.ArrayAdapter;import android.widget.SpinnerAdapter;import android.widget.TextView;public class MainActivity extends Activity {	private ActionBar mActionBar;	private String[] SpinnerValues;	private TextView tv;	@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		//取得TextView		tv=(TextView)findViewById(R.id.TextView);		//初始化数组		SpinnerValues=getResources().getStringArray(R.array.SpinnerValues);		//构造适配器		SpinnerAdapter mAdapter=ArrayAdapter.createFromResource(this, R.array.SpinnerValues, android.R.layout.simple_spinner_dropdown_item);		//取得ActionBar		mActionBar=getActionBar();		//以下拉列表方式导航		mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);		//设置监听器		mActionBar.setListNavigationCallbacks(mAdapter, new OnNavigationListener()		{			@Override			public boolean onNavigationItemSelected(int position, long id) 			{				tv.setText("你选择了了"+SpinnerValues[position].toString());				return false;			}					});	}	@Override	public boolean onCreateOptionsMenu(Menu menu) 	{		menu.add("测试项1").setIcon(R.drawable.ic_editor_white).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);		menu.add("测试项2").setIcon(R.drawable.ic_search_white).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);		menu.add("测试项3").setIcon(R.drawable.ic_refresh_white).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);		return true;	}}

同样地,上面的这个例子可以和Fragment进行很好的整合,做出更棒的效果。ActionBar+Fragment可以说是很无敌的一种设计方式。



>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();