android(八) actionbar的使用

初识action bar

软件的标题栏一般采用action bar

显示和隐藏action bar

在这里插入图片描述

构建脚本:Gradle scripts

查看android的最小 sdk版本: 在左侧 android-Gradle Scripts-build.gradle ,双击打开,minSdkVersion 15 数字就是最小sdk版本

隐藏Action Bar:

在manifests-AndroidManifest.xml中,在标记下 android:theme="@style/.NoActionBar",设置整个应用都不显示actionbar 如果想单个activity隐藏actionbar 就在标记中进行设置android:theme="@style/Theme.NoActionBar"

实例:用按钮的形式控制显示或隐藏actionbar

获取按钮 ,为按钮设置单击事件监听器

ActionBar actionBar=getSupportActionBar();//获取actionbar

actionBar.hide();//隐藏Action Bar,对象.方法来实现

actionBar.show();//显示Action Bar,对象.方法来实现

添加Action Item

Action Item:Actionbar的小图标

通过溢出菜单(三个小圆点):可以添加更多的功能

添加Action Item的步骤:

①定义菜单资源文件②在onCreateOptionsMenu()方法中加载菜单资源文件

实例:通过添加Action Item实现模拟知乎app的Action Bar

新建创建菜单资源文件(目录):在res目录中右键-New-Directory name=menu

在menu目录下创建菜单资源文件:在menu目录中右键-New-Menu resource file File name=menu.xml

导入所要添加的图标在drawable 目录下

<item android:id="@+id/search"//设置id属性

android:icon=="@drawable/search"//导入要显示的图片

android:title="search" //设置菜单显示文本

app:showAsAction="" //设置actionbar要图片显示的方式;参数为always为始终显示在actionbar上; 参数为ifRoom为如果actionbar有可用空间就显示在actionbar上,没有足够的空间就显示在溢出菜单中;never表示菜单项永远不显示在actionbar上,显示在溢出菜单中; withText表示将菜单项显示在actionbar上,并且显示菜单项的文本,并且图标有效,收到actionbar空间的显示,文本可能显示不全或者不显示,如果出现下划线就Alt+Enter ,创建对应的xmlns空间

在空白处右键-Generate-Override Methods重写onCreateOptionsMenu()方法来解析菜单资源文件

MenuInflater inflater=getMenuInflater();//在重写的方法中,实例化MenuInflater对象,通过getMenuInflater ()方法来获取

inflater.inflate(R.menu.menu,menu);//在重写的方法中,通过对象.方法来解析菜单资源文件,两个入口参数,第一个是指定要解析的菜单资源文件,第二个是menu对象(重写方法中传的入口参数menu)

默认只显示图标,在图标上长按可以显示文本

添加其他action item:添加icon与id属性在菜单资源文件中的item

在这里插入图片描述

actionbar分布的空间

添加Action View

action view为标题栏的搜索框或者搜索组件

实例:通过添加action view实现模拟支付宝朋友页面的action bar

开发步骤:

①布局界面②创建菜单资源文件③将菜单项添加到action bar上

创建menu目录

在menu目录中创建菜单资源文件 name为menu.xml

在menu目录下创建item iid title

app:actionViewClass="android.suppory.v7.widget.SearchView"设置到action view ,参数为searchview的完整路径,采用app的运行空间

app:showAsAction=“always”//设置actionview始终显示在actionbar上,并ait+enter创建app 的命名空间

getSupportActionBar().setDisplayShowTitleEnabled(false);//隐藏actionbar的显示标题,getSupportActionBar()获取到actionbar对象

解析菜单资源文件:重写oncreateoptionsmenu方法 ,实例化menuinflater对象,根据对象. 方法来解析菜单资源文件

创建标题栏图标的xml文件,在xml上设置imageview 用src插入图片

然后在菜单资源文件(menu.xml)中设置标题栏图标的item id title

app:actionLayout="@layout/img_message"//引用布局资源文件

设置actionview始终显示在actionbar上

添加几个actionview就在menu.xml中设置几个item 设置title id 指定布局文件 设置actionbar的显示方式

在这里插入图片描述

Action Bar与Tab

实现Tab导航Action Bar的步骤:①设置使用Tab导航方式②添加多个Tab标签页,并为每个Tab标签页添加事件监听

实例:模拟有道词典app的带Tab导航的Action Bar

开发步骤:

①创建5个Fragment,以及对应的布局文件②创建MyTabListener类,实现各标签页的切换③设置Actionbar为选项卡模式,并将5个标签页添加到ActionBar中

​ 在java-com.xxx-创建5个fragment(activity),并创建对应的布局文件 (layout文件夹下面fragment_1.xml)

创建类:在java-con4m.xxx中右键-new-java class name=MyTabListener,并实现ActionBar.TabListener的接口(MyTabListener implements ActionBar.TabListener)按ait+回车来实现方法,实现全部方法-ok,创建监听器的实现类

处理各选项卡的事件(onTabselected:选项卡被选择的方法,onTabUnselected:选项卡退出的方法)

private final Activity activity;//定义全局变量(activity)用于指定要加载Fragment的Actiivty,出现红色下划线,就ait+回车创建构造方法(add constructor parameter)来实例化activity

private final Class aClass;//定义全局变量(class),用于指定要加载的Fragment所对应的类,出现红色下划线,就ait+回车创建构造方法(add constructor parameter)来实例化Class

private Fragment fragment;//定义全局变量(fragment),用于定义Fragment对象

注释:/****内容/

在重写的onTabSelected来编写被选择时的代码

if(fragment ==null){}//判断fragment是否被初始化,如果为空就没有初始化,就对fragment进行初始化

fragment=Fragment.instantiate(activity,aClass.getName());//对fragment进行初始化,两个入口参数,一个为上下文对象,一个为fragment的名称(用aClass.getName()来获取类名)

ft.add(android.R.id.content,fragment,null)//对象。add来添加fragment,第一个参数由资源id来指定,第二个参数是fragment对象,第三个参数是标记

ft.attach(fragment);//显示新页面,对象.attach来实现

在onTabUnselected来编写退出选中状态时的代码

if(fragment !=null){}//判断fragment是否为空,若不为空就删除旧页面

ft.detach(fragment);//删除旧页面

在MainActivity中设置Action Bar为选项卡模式,并将标签页添加到ActionBar中

ActionBar actionBar=getSupportActionBar();//获取到actionbar对象

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//设置Action Bar为选项卡模式,参数为actionbar的常量

actionBar.setDisplayOptions(0,ActionBar.DISPLAY_SHOW_TITLE);//隐藏标题栏,第一个参数为是否显示(0为不显示);第二个参数是隐藏的对象

actionBar.addTab(actionBar.newTab().setText(“词典”).setTabListener(new MyTabListener(this,Fragment1.class)));//将每个标签页都添加到actionbar当中(添加第一个标签页),第一个参数是为标签页设置标题(用newTab获取到标签页;setText设置标题;在设置一个tab监听器,参数为创建的监听器对象,监听器的参数为activity,用this指定,第二个参数就是要显示的fragment类);

实现层级式导航

在这里插入图片描述

实例:模拟微信实现带向上导航按钮的Action Bar

开发步骤:①布局管理器并创建FriendsActivity②判断父Activity是否为空,不为空设置导航图标显示③为FriendActivity配置父Activity

要跳转几个页面就设置几个activity

通过点击imageview来启动另一个activity:

1.获取朋友圈图片:imageView=(ImageView)findViewById(R.id.imageView);

2.为图像视图设置单击事件监听器:imageView.setOnClickListener

3.在单击事件监听器下创建Intent对象:Intent intent=new Intent(MainActivity.this,FriendsActivity.class);

4.启动Activity:startAcitivyt(intent);

在manifests中可以设置标题栏的文字:android:label=“微信”

在FriendActivity中判断父Activity是否为空,不为空设置导航图标显示

if(NavUtils.getParentActivityName(FriendsActivity.this)!=null){}//判断当前的activity和父acitivity是否为空

getSupportActionBar().setDisplayHomeAsUpEnabled(true);//getSupportActionBar()来获取到actionbar对象,setDisplayHomeAsUpEnabled(true)来设置向左的导航图标

在Android-manifests来为FriendActivity配置父Activity

在<activity标签中(带有android:name):

<meta-data

android:name=“android.support.PARENT_ACTIVITY”

android:value=".MainActivity"/>//设置主activty,就是要跳转的activity

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013074761/article/details/105317664