文档章节

Android ActionBar总结

亓斌哥哥
 亓斌哥哥
发布于 2014/04/16 20:19
字数 536
阅读 280
收藏 6

1、设置显示/隐藏ActionBar

菜单xml文件

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item

        android:id="@+id/menu1"

        android:orderInCategory="1"

        android:showAsAction="ifRoom|withText"    // ifRoom:如果ActionBar有空间则显示, withText尽可能的显示文本

        android:title="菜单1"/>

    

   

<item

        android:id="@+id/menu2"

        android:orderInCategory="2"

        android:showAsAction="collapseActionView|withText"  // 如果想让这个选项放在麦库截图20141816183448703.jpg 中,可以使用collapseActionView

        android:title="菜单2" />

    

    <item

        android:id="@+id/menu3"

        android:orderInCategory="2"

        android:showAsAction="ifRoom|withText"

        android:title="菜单3">

    <menu>

            <item

                android:id="@+id/m1"

                android:orderInCategory="1"

                android:title="子项1"/>

            <item

                android:id="@+id/m2"

                android:orderInCategory="2"

                android:title="子项2"/>

        </menu>

    </item>

</menu>


显示/隐藏ActionBar

bar = super.getActionBar();

bar.show();

bar.hide();


处理菜单的点击事件

@Override

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.m1:

Toast.makeText(this, "选择了1", Toast.LENGTH_SHORT).show();

break;


case R.id.m2:

Toast.makeText(this, "选择了2", Toast.LENGTH_SHORT).show();

break;

}

return super.onOptionsItemSelected(item);

}


效果:

麦库截图20141816182411947.jpg 

麦库截图20141816182424011.jpg 




2、ActionBar + 系统View

<item

        android:id="@+id/main3"

        android:orderInCategory="3"

        android:showAsAction="always"  // 始终显示。优先级最高

        android:actionViewClass="android.widget.SearchView" />

android:actionViewClass="android.widget.SearchView"会显示android系统自带的Search组件

效果:

麦库截图20141816185251672.jpg 

麦库截图20141816185310048.jpg 


3、ActionBar + Tab

Fragment java文件

public class Frag extends Fragment {

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.frag, null);

TextView show = (TextView) view.findViewById(R.id.show);

String text = super.getArguments().getString("key");

show.setText(text);

Toast.makeText(super.getActivity(), text, Toast.LENGTH_SHORT).show();


return view;

}

}


mainActivity文件


public class MainActivity extends Activity {

private ActionBar bar;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);


bar = super.getActionBar();

bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

                bar.setHomeButtonEnabled(true);


ActionBar.Tab tab1 = bar.newTab().setText("未接电话").setTag("one")

                                .setTabListener(new Listener());

ActionBar.Tab tab2 = bar.newTab().setText("已接电话").setTag("two")

.setTabListener(new Listener());

ActionBar.Tab tab3 = bar.newTab().setText("所有电话").setTag("three")

.setTabListener(new Listener());


bar.addTab(tab1);

bar.addTab(tab2);

bar.addTab(tab3);

}


private class Listener implements TabListener {

@Override

public void onTabSelected(Tab tab, FragmentTransaction ft) {

Bundle bundle = new Bundle();

if ("one".equals(tab.getTag())) {

bundle.putString("key", "未接电话     18254588552   10:20:00");

}else if("two".equals(tab.getTag())) {

bundle.putString("key", "已接电话     18254588552   10:20:00");

}else if("three".equals(tab.getTag())) {

bundle.putString("key", "所有电话     18254588552   10:20:00");

}

Fragment frag = new Frag();

frag.setArguments(bundle);

ft.replace(R.id.content, frag); // 不需要commit, 系统会自动commit

}


@Override

public void onTabUnselected(Tab tab, FragmentTransaction ft) {

}


@Override

public void onTabReselected(Tab tab, FragmentTransaction ft) {

}


}


@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}


@Override

public boolean onOptionsItemSelected(MenuItem item) {

if (item.getItemId() != R.id.main3) {

Toast.makeText(this, "选择了" + item.getTitle(), Toast.LENGTH_SHORT)

.show();

}

return super.onOptionsItemSelected(item);

}

}



4、ActionBar List显示

bar = super.getActionBar();

bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

bar.setHomeButtonEnabled(true);

bar.setIcon(R.drawable.ic);

bar.setListNavigationCallbacks(new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_1, titles),

new OnNavigationListener() {

@Override

public boolean onNavigationItemSelected(int itemPosition,

long itemId) {

Toast.makeText(MainActivity.this, titles[itemPosition],

Toast.LENGTH_SHORT).show();

return false;

}

});


效果:

 

© 著作权归作者所有

共有 人打赏支持
亓斌哥哥

亓斌哥哥

粉丝 28
博文 34
码字总数 12346
作品 13
莱芜
程序员
私信 提问
解决修改 Style Attributes 不起作用的问题

今天新建一个项目时遇到了一个问题,项目中大部分 Activity theme 需要显示 ActionBar,个别页面根据业务不需要显示。 需求很简单,直接定义 AppTheme 作为 Application 的基础样式,再定义一...

一叶飘舟
10/31
0
0
actionbarsherlock使用总结

为了在2.*版本使用actionbar,在网上下载了开源的actionbarsherlock,花了一下午才搞定。。。。 由于是新人,遇到了不少问题,现在总结一下。 1、不用说,下载 http://actionbarsherlock.com...

尼莫
2012/10/19
0
1
Android之ActionBar学习

关于那个问题:是关于如何生成如下图所示之ActionBar效果: 其实就在官网上就有答案,自己疏忽再加上资料繁多。寻了许久,经过指点。终于找到: To enable split action bar, simply add uiO...

尼莫
2012/10/12
0
1
Android ActionBar详解

关于ActionBar,相信大家并不陌生,但是真正能够熟练使用的也不是很多,这篇文章主要为大家详细介绍ActionBar的相关知识,ActionBar是在Android3.0中引入的概念,所以在2.x系统中使用ActionBar...

恰同学少年
2015/08/03
0
0
浅谈Activity,Fragment模块化封装

欢迎大家访问我的博客:博客地址 概述 继承关系 这里的继承关系大家肯定十分熟悉了,这里贴出的是v4包中fragment,可以看出fragment是直接继承于object的,与四大组件没有任何关系。 两者之间...

stone_zhu
06/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Scala之初步认识与环境准备

1. 了解 Scala 1.1. 什么是 Scala Scala 是 Scalable Language 的简写,是一门多范式的编程语言。 Scala设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚...

飞鱼说编程
10分钟前
0
0
Vue项目分环境打包的实现步骤

在项目开发中,我们的项目一般分为开发版、测试版、Pre版、Prod版。Vue-cli的默认环境一只有dev和prod两个,之前每次要发布测试版或Pre版都是修改了源码中API地址后打包,这样很麻烦。如果能...

peakedness丶
10分钟前
0
0
vue+lowdb+express

搭建流程: 1.安装Node.js; 2.安装npm; 3.安装Express; 搭建流程 npm install -g express 安装 express 生成器 npm install -g express-generator 查看是否安装成功,随便输的一个命令...

Js_Mei
15分钟前
0
0
Qt那些事0.0.15

以下与Q_DECLARE_METATYPE相关内容全部是翻译自Qt文档。参看QVariant Class | Qt Core 5.9以及QMetaType Class | Qt Core 5.9 QVariant QVariant::fromValue(const T& value) 返回一份包含v......

Ev4n
16分钟前
3
0
spring上传文件返回绝对路径,简单工具类

import com.google.common.io.Files;import lombok.extern.slf4j.Slf4j;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.IOExceptio......

Boss-x
28分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部