actionbar 详解教程
actionbar的条件是
1.高于3.0版本的或者 android:targetSdkVersion 属性被设置成11或者更高
2.低于3.0的版本 在libs里面添加以下v7 安装包
1.创建actionbar(方法两种)
a。动态添加
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.FragmentTransaction;
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.ArrayAdapter;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends Activity {private ActionBar actionBar;private Button tabs;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);actionBar = getActionBar();actionBar.show();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stub// 添加菜单MenuItem add = menu.add(0, 0, 0, "add");MenuItem del = menu.add(0, 0, 0, "del");MenuItem save = menu.add(0, 0, 0, "save");MenuItem save1 = menu.add(0, 0, 0, "save1");MenuItem save2 = menu.add(0, 0, 0, "save2");MenuItem save3 = menu.add(0, 0, 0, "save3");// 绑定到actionbaradd.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);del.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);save.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);save1.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);save2.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);save3.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);return true;}
}
SHOW_AS_ACTION_ALWAYS: 总是将该menuitem显示在actionbar上
SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW:将该ActionView折叠成普通菜单项
SHOW_AS_ACTION_IF_ROOM:当actionbar位置足够时才显示在actionbar上。
SHOW_AS_ACTION_NEVER:不将该menuitem显示在actionbar上。
SHOW_AS_ACTION_WITH_TEXT:把menuItem显示在actionbar上,并且显示该菜单项的文本。
package com.wang.android.myactionbar;import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.FragmentTransaction;
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.ArrayAdapter;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends Activity {private ActionBar actionBar;private Button tabs;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubMenuInflater mi = getMenuInflater();mi.inflate(R.menu.menu, menu);return true;}
}
menu/menu.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" ><itemandroid:id="@+id/item1"android:orderInCategory="1"android:showAsAction="ifRoom|withText"android:title="save"/><itemandroid:id="@+id/item2"android:orderInCategory="2"android:showAsAction="ifRoom|withText"android:title="edit2"/><itemandroid:id="@+id/item3"android:orderInCategory="3"android:showAsAction="ifRoom|withText"android:title="edit3"/><itemandroid:id="@+id/item4"android:orderInCategory="5"android:showAsAction="ifRoom|withText"android:title="edit4"/><itemandroid:id="@+id/item5"android:orderInCategory="4"android:showAsAction="ifRoom|withText"android:title="edit5"/></menu>
调用 onOptionsItemSelected(MenuItem item)方法
package com.wang.android.myactionbar;import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.FragmentTransaction;
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.ArrayAdapter;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends Activity {private ActionBar actionBar;private Button tabs;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubMenuInflater mi = getMenuInflater();mi.inflate(R.menu.menu, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case R.id.item1:Toast.makeText(this, "item1", 2000).show();break;case R.id.item2:Toast.makeText(this, "item2", 2000).show();break;case R.id.item3:Toast.makeText(this, "item3", 2000).show();break;default:break;}return super.onOptionsItemSelected(item);}}
把onptionsItemSelected方法换成这个也可以 。。目前没有太大问题
@Overridepublic boolean onMenuItemSelected(int featureId, MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case R.id.item1:Toast.makeText(this, "item1", 2000).show();break;case R.id.item2:Toast.makeText(this, "item2", 2000).show();break;case R.id.item3:Toast.makeText(this, "item3", 2000).show();break;default:break;}return super.onMenuItemSelected(featureId, item);}
3.actionbar home图标区
// actionBar.setDisplayHomeAsUpEnabled(true);
// 此home图标的id便是androi.R.id.home;
package com.wang.android.myactionbar;import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.ActionBar.TabListener;
import android.app.Activity;
import android.app.FragmentTransaction;
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.ArrayAdapter;
import android.widget.Button;
import android.widget.Toast;public class MainActivity extends Activity {private ActionBar actionBar;private Button tabs;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);actionBar = this.getActionBar();if (actionBar != null) {// icon点击使能// 而如果想要对home图标进行点击时间处理,则需要在为这个icon“使能”:// actionBar.setDisplayHomeAsUpEnabled(true);// 此home图标的id便是androi.R.id.home;actionBar.setDisplayHomeAsUpEnabled(true);}// actionBar.show();}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubMenuInflater mi = getMenuInflater();mi.inflate(R.menu.menu, menu);return true;}@Overridepublic boolean onMenuItemSelected(int featureId, MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()) {case android.R.id.home:Toast.makeText(this, "home", 2000).show();break;case R.id.item1:Toast.makeText(this, "item1", 2000).show();break;case R.id.item2:Toast.makeText(this, "item2", 2000).show();break;case R.id.item3:Toast.makeText(this, "item3", 2000).show();break;default:break;}return super.onMenuItemSelected(featureId, item);}// @Override// public boolean onOptionsItemSelected(MenuItem item) {// // TODO Auto-generated method stub// switch (item.getItemId()) {// case R.id.item1:// Toast.makeText(this, "item1", 2000).show();// break;// case R.id.item2:// Toast.makeText(this, "item2", 2000).show();// break;//// case R.id.item3:// Toast.makeText(this, "item3", 2000).show();// break;//// default:// break;// }// return super.onOptionsItemSelected(item);// }}
case android.R.id.home:Intent intent = new Intent(this, MainActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP| Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);Toast.makeText(getApplicationContext(), "android.R.id.home", 0).show();break;
如果选择返回应用的主activity,最好的方式是在创建的Intent中添加FLAG_ACTIVITY_CLEAR_TOP这个标签。
使用这个FLAG_ACTIVITY_CLEAR_TOP标签,如果应用的主Activity已经在activity栈中存在,所有在其上的activity都会被销毁,然后主activity会到栈顶,而不用创建主Activity的的新实例。
tabs = (Button) findViewById(R.id.tabs);tabs.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {actionBar.setTitle("选项卡");actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);actionBar.addTab(actionBar.newTab().setText("Tab1").setTabListener(MainActivity.this));actionBar.addTab(actionBar.newTab().setText("Tab2").setTabListener(MainActivity.this));actionBar.addTab(actionBar.newTab().setText("Tab3").setTabListener(MainActivity.this));}});findViewById(R.id.list).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubString[] str = { "1", "2", "3", "4", "5" };actionBar.setTitle("列表");actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);actionBar.setListNavigationCallbacks(new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item, str),MainActivity.this);}});
<itemandroid:id="@+id/search"android:actionViewClass="android.widget.SearchView"android:showAsAction="ifRoom|withText"android:title="Search"/>
主函数中
// 搜索時間SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
分享 视图
// 添加分享按钮的事件// 4.0以下没有ShareActionProviderMenuItem menuItem_share = menu.findItem(R.id.menu_share);// Get the provider and hold onto it to set/change the share intent.ShareActionProvider mShareActionProvider = (ShareActionProvider) menuItem_share.getActionProvider();mShareActionProvider.setShareIntent(getDefaultShareIntent());
getDefaultShareInten方法为
private Intent getDefaultShareIntent() {// TODO Auto-generated method stubIntent intent = new Intent(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_SUBJECT, "小清新短信闪");intent.putExtra(Intent.EXTRA_TEXT, "小清新短信闪 1.0");intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);return intent;}
xml为
<itemandroid:id="@+id/menu_share"android:actionProviderClass="android.widget.ShareActionProvider"android:enabled="true"android:showAsAction="ifRoom"android:title="分享"/>
自定义一些功能 拓展功能
<itemandroid:id="@+id/menu_collapse"android:actionLayout="@layout/collapsibleview"android:icon="@drawable/arro_down"android:showAsAction="ifRoom|collapseActionView"android:title="拓展"/>
never:永远不会显示。只会在溢出列表中显示。
ifRoom:会显示在Item中,但是如果已经有4个或者4个以上的Item时会隐藏在溢出列表中。
always:无论是否溢出,总会显示。
withText:Title会显示。
collapseActionView:可拓展的Item。
android:actionLayout="@layout/collapsibleview"
为自定义的一个layout
collapsibleview.xml
</pre><pre name="code" class="java"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal" ><Buttonandroid:id="@+id/colla_btn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button" /><EditTextandroid:id="@+id/colla_edit"android:layout_width="match_parent"android:layout_height="wrap_content"android:ems="10" ></EditText></LinearLayout>
主函数中
// 给可折叠的view上的控件添加事件LinearLayout viewGroup = (LinearLayout) menu.findItem(R.id.menu_collapse).getActionView();Button btnn = (Button) viewGroup.findViewById(R.id.colla_btn);final EditText editText = (EditText) viewGroup.findViewById(R.id.colla_edit);btnn.setOnClickListener(new OnClickListener() {public void onClick(View v) {// TODO Auto-generated method stubToast.makeText(getApplicationContext(),editText.getText() + "~", 0).show();}});
当折叠的函数 展开或收起的时候也有一个监听 setOnActionExpandListener
MenuItem menuItem = menu.findItem(R.id.menu_collapse);menuItem.setOnActionExpandListener(new OnActionExpandListener() {@Overridepublic boolean onMenuItemActionExpand(MenuItem item) {// TODO Auto-generated method stubToast.makeText(getApplicationContext(),"onMenuItemActionExpand", 0).show();return true;}@Overridepublic boolean onMenuItemActionCollapse(MenuItem item) {// TODO Auto-generated method stubToast.makeText(getApplicationContext(),"onMenuItemActionCollapse", 0).show();return true;}});
代码http://download.csdn.net/detail/wanghao200906/8182135
actionbar 详解教程相关推荐
- 多图详解教程:Eclipse 3.6连接Tomcat 7
多图详解教程:最新版本Java环境Eclipse 3.6连接最新版本开源Web服务器Tomcat 7.假如我们想将Java 的项目自己配环境浏览的话可以来看一下本文. 本文总共分为3大步分别为配置JR ...
- PE文件详解(教程1-7)
PE文件详解(教程1-7) ========================================= PE教程1: PE文件格式一览 PE 的意思就是 Portable Executable ...
- 5W字高质量java并发系列详解教程(上)-附PDF下载
文章目录 第一章 java.util.concurrent简介 主要的组件 Executor ExecutorService ScheduledExecutorService Future Count ...
- jmeter 导入java,JMeter导入自定义的Jar包的详解教程
1.简介 原计划这一篇是介绍前置处理器的基础知识的,结果由于许多小伙伴或者童鞋们在微信和博客园的短消息中留言问如何引入自己定义的Jar包呢???我一一回复告诉他们和引入插件的Jar包一样的道理,一通百 ...
- 基于百度地图实现Android定位功能实现(详解+教程)
基于百度地图实现Android定位功能实现(详解+教程) 1.初始化 (一)获取到SHA1 (1)找到View中的Tool Windows并打开Terminal (2)找到你的jdk的bin目录,小编 ...
- 分享 | 日置3561电池测试仪调零/自校准详解教程
日置电池测试仪3561产品特点: ● 高精度:电阻±0.5% rdg. ±5dgt., 电压±0.01% rdg. ±3dgt. ● 高分辨率:电阻0.01mΩ(300mΩ量程); 电压0.1mV ...
- 国行ps4服务器维护,赶快回家试试!国行PS4终解除锁区附详解教程
是不是买了国行PS4但是无法和其他服务器玩家联机非常的苦恼呢?现在这个现状即将打破,是不是兴奋的想回家试试你的主机呢?让我们先来还原下整个事情经过,感觉就是索尼在老主机寿终正寝前给玩家放松的福利- 近 ...
- dellr420部署os_戴尔dell poweredge r730服务器系统安装配置详解教程
第一次给服务器安装的是ubantu系统: 首先我们开机进入小型BIOS设置一下RAID,或者进入服务器管理系统,在系统的BIOS中进行RAID设置: 开机后当看到出现< Ctrl > 时按 ...
- 电脑ps计算机磨皮,用PS磨皮详解教程 -电脑资料
原图和最终效果图的对比 1.打开原图,先用橡皮图章去豆,不透明度与压力都调小一些,这样相对柔和一点,也比较自然, 2.复制图层,双击快速蒙版,快捷键Q,颜色自己定,不透明度,我个人习惯在40%. 3. ...
最新文章
- 2次转管理失败后,我对项目、团队、敏捷转型的新认知
- pandas索引复合索引dataframe数据、索引其中多个水平(level)的多个数据行(index rows from different levels)、使用元组tuple表达复合索引的指定行
- 全面解读Objective-C语言及Cocoa特性——《Objective-C基础教程》
- @SkipValidation跳过Struts2validation校验器
- 网络公司如何快速获取网站关键词流量
- 如何实现js调用java函数
- 数据结构:插入排序(Insertion sort)
- [iPhoneアプリ]iEscaper2攻略その6|龍の水晶
- armv7的linux系统,CentOS 7(1611) for ARM(armhfp)发布
- Python变量的作用范围
- 计算机生成兵力方法,计算机生成兵力平台体系结构技术研究
- 修改linux域名解析失败,kali 更新域名解析失败问题解决办法
- 联通关闭2G、3G信号?老人机可能真的不能用了!
- python的类作用_从封装看类的作用
- 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
- 二手台式计算机,二手台式电脑价格 购买二手台式电脑时该注意的问题【图解】...
- JAVA 实现对图片打码,打马赛克
- 科技是创新之本 企业生命之源 2019中关村国际前沿科技创新大赛圆满闭幕
- 推荐一款「聚合支付平台」,拿来就可以使用
- 一个小公司老板的日常管理 .