Android开发学习之ActionBar深入
在 上一篇文章中,我们实现了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可以说是很无敌的一种设计方式。
閹躲儱鎮曠€涳缚绡勯崝鐘蹭簳娣囷拷/QQ 1602007閿涘苯鍙у▔銊b偓濠佺閺傜浠堥惄鐔虹秹閵嗗浜曟穱鈥冲彆娴兼褰�
>更多相关文章
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 03-08消息称微软开发内部AI推理模型,或将成为Op
- 03-08美国法院驳回马斯克请求,未阻止OpenAI转型
- 03-08饿了么成立即时配送算法专家委员会 持续全局
- 03-08长安汽车:预计今年底长安飞行汽车将完成试
- 03-08谷歌推出虚拟试穿、AR美妆新功能
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御