Android巧用ActionBar实现tab导航效果
作者:summerpxy 发布时间:2022-06-02 05:49:18
本文实例为大家分享了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) {
}
}
实现效果:


猜你喜欢
- 一、项目前提1、购物车并不是一直放数据库2、选择使用的技术:session:(购物车项目使用session)好处:快(放在内存当中),存对象
- Spring Batch job任务只跑一次在一次实际使用spring batch的过程中,在定时任务中,第一次执行Job没有出现问题,然后
- static void Main(string[] args){ Process proc = null
- 一. MediaPlayer 状态机 介绍Android MediaPlayer 状态即图例 :1. Idle (闲置) 状态 和 End
- 本项目为大家分享了Java实现简单计算器功能的具体代码,供大家参考,具体内容如下一 项目说明实训目的:掌握 Java GUI 开发中的布局管
- 我们经常要将数字进行格式化,比如取2位小数,这是最常见的。Java 提供DecimalFormat类,帮你用最快的速度将数字格式化为你需要的
- 原来的测试类的注解:@RunWith(SpringRunner.class)@SpringBootTest一直没法自动注入,后来在@Spri
- 这篇文章主要介绍了如何使用java修改文件所有者及其权限,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的
- 项目要求1.初次打开程序时右上角标题栏显示“无连接”,点击旁边的按钮选择“我的好友”,进入配对界面;2.选择好友之后,返回主界面,标题栏会显
- 自动配置底层源码分析本次springboot源码来自2.6.6版本。@EnableAutoConfiguration源码解析在springb
- 一、Ctrl+F或者Ctrl+Shift+R 按照文本的内容查找1. 相当于eclipse的ctrl+H,Ctrl+F是在本页查找2. 相当
- 对一个集合中的对象进行排序,根据对象的某个指标的大小进行升序或降序排序。代码如下:进行降序排列 进行降序排列 Co
- 一、项目简述功能包括(管理员和学生角色): 管理员和学生登录,图书管理,图书添加删除修改,图书 借阅,图书归还,图书查看,学生管理,借还管理
- 当多个界面都有很多相似部分时,可以考虑创建一个功能较全的模板。而在需要时,可以通过引用模板来实现自己想要实现的功能。比如适配器 Adapte
- 异常是 Java 程序中经常遇到的问题,我想每一个 Java 程序员都讨厌异常,一 个异常就是一个 BUG,就要花很多时间来定位异常问题。1
- 在上篇文章给大家介绍了Android Bluetooth蓝牙技术初体验相关内容,感兴趣的朋友可以点击了解详情。一:蓝牙设备之间的通信主要包括
- 1.下载jenkins 下载地址:https://jenkins.io/  
- 定义Java修饰符:修饰符用来定义类、方法或者变量,通常放在语句的最前端。分类主要分为2类:访问控制修饰符非访问控制修饰符访问控制修饰符可以
- 简介在有些场景中,我们会需要绘制一些高度定制化的组件,比如 UI 设计师给我们出了个难题 —— 弄一
- 在java开发中,类、接口、方法,都需要进行注释,注释内容如图:注释中的基本元素有:描述、作者、创建日期。可增加元素有:修改日期、修改内容、