云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > AndroidUI设计与开发 顶部标题栏ActionBar奥义详解 - 图文

AndroidUI设计与开发 顶部标题栏ActionBar奥义详解 - 图文

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 2:47:52

public void onTabSelected(Tab tab, FragmentTransaction ft) { // Check if the fragment is already initialized if (mFragment == null) {

// If not, instantiate and add it to the activity mFragment = Fragment.instantiate(mActivity, mClass.getName());

ft.add(android.R.id.content, mFragment, mTag); } else {

// If it exists, simply attach it in order to show it ft.attach(mFragment); } }

public void onTabUnselected(Tab tab, FragmentTransaction ft) { if (mFragment != null) { // Detach the fragment, because another one is being attached ft.detach(mFragment); } }

public void onTabReselected(Tab tab, FragmentTransaction ft) { // User selected the already selected tab. Usually do nothing. } }

这段代码并不长,我们简单分析一下。当Tab被选中的时候会调用onTabSelected()方法,在这里我们先判断mFragment是否为空,如果为空的话就创建Fragment的实例并调用FragmentTransaction的add()方法,如果不会空的话就调用FragmentTransaction的attach()方法。 而当Tab没有被选中的时候,则调用FragmentTransaction的detach()方法,将UI资源释放掉。 当Tab被重新选中的时候会调用onTabReselected()方法,如果没有特殊需求的话,通常是不需要进行处理的。 接下来第二步要给每一个Tab创建一个ActionBar.Tab的实例,在此之前要先准备好每个Tab页对应的Fragment。比如说这里我们想创建三个Tab页,准备好这三个Tab页对应的Fragment和对应的布局文件。

package com.yanis.yc_ui_actionbar_tab;

import android.os.Bundle;

import android.view.LayoutInflater; import android.view.View;

import android.view.ViewGroup;

public class Fragment1 extends android.app.Fragment { @Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

return inflater.inflate(R.layout.fragment1, container, false); } }

没有什么实质性的代码,只是显示了指定的布局文件。 Fragment都准备好了之后,接下来就可以开始创建Tab实例了,创建好了之后则再调用addTab()方法添加到ActionBar当中,这两步通常都是在Activity的onCreate()方法中执行的,代码如下:

package com.yanis.actionbar;

import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.Activity; import android.content.Intent; import android.os.Bundle;

import android.support.v4.app.NavUtils;

import android.support.v4.app.TaskStackBuilder; import android.view.MenuItem;

public class TabActivity extends Activity { @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tab);

initView(); }

private void initView() {

// 提示getActionBar方法一定在setContentView后面 ActionBar actionBar = getActionBar();

actionBar.setDisplayHomeAsUpEnabled(true);

actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

// 添加Tab选项 Tab tab = actionBar

.newTab()

.setText(\澳门风云2\ .setTabListener(

new TabListener(this, \ Fragment1.class)); actionBar.addTab(tab);

tab = actionBar .newTab()

.setText(\五十度灰\ .setTabListener(

new TabListener(this, \ Fragment2.class)); actionBar.addTab(tab); tab = actionBar .newTab()

.setText(\爸爸去哪儿2\ .setTabListener(

new TabListener(this, \ Fragment3.class)); actionBar.addTab(tab); }

@Override

public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home:

Intent upIntent = NavUtils.getParentActivityIntent(this); if (NavUtils.shouldUpRecreateTask(this, upIntent)) { TaskStackBuilder.create(this)

.addNextIntentWithParentStack(upIntent) .startActivities(); } else {

upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); NavUtils.navigateUpTo(this, upIntent); }

return true; default:

return super.onOptionsItemSelected(item); } } }

可以看到,这里是使用连缀的写法来创建Tab的。首先调用ActionBar的newTab()方法来创建一个Tab实例,接着调用了setText()方法来设置标题,然后再调用setTabListener()方法来设置事件监听器,最后再调用ActionBar的addTab()方法将Tab添加到ActionBar中。 好了,这样的话代码就编写完了,效果如下图所示: 11.添加下拉列表导航 1.1 简单介绍 作为Activity内部的另一种导航(或过滤)模式,操作栏提供了内置的下拉列表。下拉列表能够提供Activity中内容 的不同排序模式。 启用下拉式导航的基本过程如下: <1> 创建一个给下拉提供可选项目的列表,以及描画列表项目时所使用的布局; <2> 实现ActionBar.OnNavigationListener回调,在这个回调中定义当用户选择列表中一个项目时所发生的行为; <3> 用setNavigationMode()方法该操作栏启用导航模式; <4> 用setListNavigationCallbacks()方法给下拉列表设置回调方法。 1.2 效果图如下:

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

public void onTabSelected(Tab tab, FragmentTransaction ft) { // Check if the fragment is already initialized if (mFragment == null) { // If not, instantiate and add it to the activity mFragment = Fragment.instantiate(mActivity, mClass.getName()); ft.add(android.R.id.content, mFragment, mTag); } else {

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com