欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android巧用ActionBar实现tab导航效果

程序员文章站 2024-03-01 18:15:46
本文实例为大家分享了actionbar实现tab导航效果的具体代码,供大家参考,具体内容如下 先来说一说基础知识: 一、基本使用方法 1.获取actionbar...

本文实例为大家分享了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) {

 }

}

实现效果:

Android巧用ActionBar实现tab导航效果

Android巧用ActionBar实现tab导航效果

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