当前位置: 移动技术网 > IT编程>移动开发>Android > Android巧用ActionBar实现tab导航效果

Android巧用ActionBar实现tab导航效果

2019年07月24日  | 移动技术网IT编程  | 我要评论

28183电影网,爱拼网娱乐城,超级电能

本文实例为大家分享了actionbar实现tab导航效果的具体代码,供大家参考,具体内容如下

先来说一说基础知识:

一、基本使用方法

1.获取actionbar

 获取actionbar很简单,在activity中,ationbar=this.getactionbar();

2.显示/隐藏

设置actionbar的显示/隐藏,可以使用show()和hide()方法。

3.设置menuitem

通过设置menuitem,可以使menuitem成为actionbar上的item。

setshowasaction(int actionenum),这个actionenum支持的参数如下:

   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上,并且显示该菜单项的文本。

也可以在xml属性,定义item的属性 android:showasaction来设置。

4.启用程序图标导航

setdisplayhomeasupenabled(boolean showhomeasup):设置是否应该将应用程序图标转变成可点击的图标,并且在图标上添加一个向左的箭头。

setdisplayoptions(int options):控制actionbar的显示选项。opitions选项为:

      display_home_as_up

      display_show_custom

      display_show_home

      display_show_title

      display_use_logo

      navigation_mode_list

      navigation_mode_standard

      navigation_mode_tabs

setdislayshowhomeenabled(boolean showhome):设置是否显示应用程序的图标。

sethomebuttonenabled(boolean eabled):  设置是否将应用程序图标转变成可点击的按钮。

5.actionbar中添加view

定义action item时,使用android:actionviewclass属性指定action view的实现类。

定义action item时,使用android:actionlayout属性指定action view对应的视图资源。

二、android巧用actionbar实现tab导航效果
利用actionbar同样也可以轻松的实现tab导航的效果,配合使用fragment实现切换不同view的功能。

若想使用这个功能,需要

1)设置actionbar.setnavigationmode(actionbar.navigation_mode_tabs),使actionbar使用tab导航功能。

2)调用actionbar的addtab()方法,添加多个tab标签,并为每个tab标签添加时间监听器。

myfragment.java

package com.app.main;

import android.annotation.suppresslint;
import android.app.fragment;
import android.content.context;
import android.os.bundle;
import android.view.layoutinflater;
import android.view.view;
import android.view.viewgroup;
import android.view.viewgroup.layoutparams;
import android.widget.textview;

@suppresslint("newapi")
public class myfragment extends fragment {

 @override
 public view oncreateview(layoutinflater inflater, viewgroup container,
   bundle savedinstancestate) {

  context context = this.getactivity();

  textview tv = new textview(context);

  bundle arc = this.getarguments();

  int tabs=arc.getint("key");
  
  tv.setlayoutparams(new layoutparams(layoutparams.fill_parent,
    layoutparams.wrap_content));

  tv.settext("hello actionbar "+tabs);

  return tv;

 }

}

main.xml

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 tools:context=".main" >

 <linearlayout
  android:id="@+id/container"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" />

</relativelayout>

main.java

package com.app.main;

import android.app.actionbar;
import android.app.actionbar.tab;
import android.app.activity;
import android.app.fragmenttransaction;
import android.os.bundle;

public class main extends activity implements actionbar.tablistener {

 actionbar actionbar = null;

 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.main);

  actionbar = this.getactionbar();

  actionbar.setnavigationmode(actionbar.navigation_mode_tabs);

  actionbar.addtab(actionbar.newtab().settext("tab1")
    .settablistener(this));

  actionbar.addtab(actionbar.newtab().settext("tab2")
    .settablistener(this));

  actionbar.addtab(actionbar.newtab().settext("tab3")
    .settablistener(this));

 }

 @override
 public void ontabreselected(tab tab, fragmenttransaction ft) {

 }

 @override
 public void ontabselected(tab tab, fragmenttransaction ft) {

  myfragment frag = new myfragment();

  int index = tab.getposition() + 1;

  bundle bundle = new bundle();

  bundle.putint("key", index);

  frag.setarguments(bundle);

  fragmenttransaction action = main.this.getfragmentmanager()
    .begintransaction();

  action.replace(r.id.container, frag);

  action.commit();

 }

 @override
 public void ontabunselected(tab tab, fragmenttransaction ft) {

 }

}

实现效果:

以上就是本文的全部内容,希望能给大家一个参考,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网