`

玩转Android---UI篇---Tab Layout(选项卡布局)

阅读更多

为了创建一个选项卡的UI,你需要使用一个TabHost和一个TabWidget,TabHost必须是布局文件的根节点,它包含了为了显示选项卡的TabWidget和一个用于显示选项内容的FrameLayout

你可以用一或两种方法实现你的选项卡内容:在用一个Activity中用选项卡来在视图之间切换,或者用用选项卡来改变所有的分离的Activity。你根据你的需求来使用你想在程序中的方法,但是如果每个选项卡提供一个独特的用户Activity,那么为每个选项卡实现独立的Activity是有意义的,所有你最好在你的离散群里管理应用程序,要好过使用大量的应用程序和布局文件。

在这个例子中,你可以创建一个为每个单独的Activity创建选项卡来创建一个选项卡UI

 

1、开始一个新的工程,叫做HelloTabWidget

 

2、第一,创建三个独立的Activity程序在你的工程中:ArtistsActivity,AlbumsActivity,和SongsActivity,他们每个代表一个单独的选项卡,现在用TextView来没每个程序显示一个简单的信息,比如:

package org.hualang.tabwidget;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class AlbumsActivity extends Activity {
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		 TextView textview = new TextView(this);
		 textview.setText("This is the Albums tab");        
		setContentView(textview);
	}
}

 

package org.hualang.tabwidget;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class SongsActivity extends Activity {
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		 TextView textview = new TextView(this);
		 textview.setText("This is the Songs tab"); 
		setContentView(textview);
	}

}

 

package org.hualang.tabwidget;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class ArtistsActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
		 TextView textview = new TextView(this);
		 textview.setText("This is the Artists tab"); 
        setContentView(textview);
    }
}

 注意这个例子中不需要布局文件,只需要创建一个TextView,并且为文本赋值即可。重复创建三个类似的Activity,并且要在AndroidManifest.xml文件中注册,否则报错

3、你需要为每个选项卡设置一个icon,每个icon,你可以有两个版本,一个是当选项卡被选中的时候,另一个是当选项卡未被选中的时候。一般设计来说,建议当被选中的时候用灰色,的那个未被选中的时候用白色,比如




 
 你可以拷贝这两张图片来做实验用
现在创建一个状态图片列表来制定每个选项卡不同状态的时候所指定的图片
 ①把图排尿保存在res/drawable/目录下
 ②在res/drawable/目录下创建一个名为ic_tab_artists.xml文件,并且插入如下信息

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected,use grey -->
	<item android:drawable="@drawable/ic_tab_artists_grey"
		android:state_selected="true"/>
	<!-- When not selected ,use white -->
	<item android:drawable="@drawable/ic_tab_artists_white"/>
</selector>

 

上面这个文件,当选项卡的状态改变的时候,选项卡就会自动的在两种已经定义的图片之间切换

 

4、打开res/layout/main.xml文件并且插入如下信息

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp" />
    </LinearLayout>
</TabHost>

 

这个布局文件将显示选项卡兵器提供每个Activity之间的导航
TabHost要求一个TabWidget和一个FrameLayout布局,为了使TabWidget和FrameLayout的位置处于垂直方向,需要一个LinearLayout,FrameLayout是每个选项卡内容的地方,之所以那里的内容是空的是因为在TahHost中将自动为每个Activity嵌入

注意,TabWidget和FrameLayout元素的ID标签和tabcontent元素,这些名称必须使用,因为TahHost检索他们的引用,它恰好期望的是这些名字

 

6、编写HelloTabWidget。继承TabWidget

package org.hualang.tabwidget;

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;

public class HelloTabWidget extends TabActivity  {
	public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.main);

	    Resources res = getResources(); // Resource object to get Drawables
	    TabHost tabHost = getTabHost();  // The activity TabHost
	    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
	    Intent intent;  // Reusable Intent for each tab

	    // Create an Intent to launch an Activity for the tab (to be reused)
	    intent = new Intent().setClass(this, ArtistsActivity.class);

	    // Initialize a TabSpec for each tab and add it to the TabHost
	    spec = tabHost.newTabSpec("artists").setIndicator("Artists",
	                      res.getDrawable(R.drawable.ic_tab_drawable))
	                  .setContent(intent);
	    tabHost.addTab(spec);

	    // Do the same for the other tabs
	    intent = new Intent().setClass(this, AlbumsActivity.class);
	    spec = tabHost.newTabSpec("albums").setIndicator("Albums",
	                      res.getDrawable(R.drawable.ic_tab_drawable))
	                  .setContent(intent);
	    tabHost.addTab(spec);

	    intent = new Intent().setClass(this, SongsActivity.class);
	    spec = tabHost.newTabSpec("songs").setIndicator("Songs",
	                      res.getDrawable(R.drawable.ic_tab_drawable))
	                  .setContent(intent);
	    tabHost.addTab(spec);

	    tabHost.setCurrentTab(2);
	}


}

 

运行结果:



 

  • 大小: 791 Bytes
  • 大小: 1.1 KB
  • 大小: 10.1 KB
分享到:
评论
3 楼 shuimuouyang 2012-09-13  
是娄立军师兄吗,学习了。
2 楼 hualang 2011-03-31  
这段时间比较懒,所以基本没有怎么写,很快的
1 楼 vance_sunny 2011-03-29  
等待楼主关于 数据库方面的更新~~~

相关推荐

    Android---UI篇

    •Android---UI篇---Tab Layout(选项卡布局) • •Andorid---UI篇---TableLayout(表格布局) • •Android---UI篇---RelativeLayout(相对布局) • •Android---UI篇---GridView(网格布局) • •Android---UI篇-...

    Android多个TAB选项卡切换效果

    本篇文章将详细介绍如何在Android中实现这样的功能,以创建一个包含多个选项卡的切换效果。 首先,我们要理解Android中的选项卡切换通常是如何实现的。在Android中,我们可以使用`ViewPager`配合`TabLayout`或者...

    [源码]Android开发 漂亮底部Tab栏 标签 选项卡制作教程

    它通常包含3到5个选项卡,每个选项卡对应一个主要的功能区域。用户点击选项卡时,应用会显示相应的页面内容。在Android中,我们可以使用`BottomNavigationView`组件来实现这一功能。 1. **使用BottomNavigationView...

    Material-Design-Tab-Layout-with-View-Pager-and-Fragments-Example-:带有“查看寻呼机”和“片段”的“材料设计”选项卡布局完整的源代码-Material source code

    这个项目名为"Material-Design-Tab-Layout-with-View-Pager-and-Fragments-Example",它展示了如何在Android应用中实现一个符合Material Design规范的选项卡布局,同时结合了View Pager和Fragments来实现动态内容...

    (0027)-iOS/iPhone/iPAD/iPod源代码-选项卡(Tab Bar)-Customized Tab Bar

    在iOS应用开发中,选项卡(Tab Bar)是常见的用户界面元素,用于提供多视图间的导航。本教程重点讲解如何自定义`UITabBar`,以实现个性化的设计和交互效果。`UITabBar`是iOS SDK中的一个控件,通常位于应用底部,...

    android-tab-fragments:ActionBar 选项卡和片段

    本项目"android-tab-fragments"重点探讨了如何在`ActionBar`中使用选项卡来切换不同的`Fragment`,这是一种组织应用内容的有效方式,特别是在屏幕空间有限的移动设备上。 `Fragment`是Android中的一个可重用的UI...

    仿qqTab左右切换选项卡

    在Android应用开发中,"仿qqTab左右切换选项卡"是一种常见的用户界面设计,它能够为用户提供直观且易于导航的体验。QQ作为中国最流行的即时通讯软件,其应用中的Tab栏设计深受用户喜爱,因此很多开发者尝试在自己的...

    Android快速实现选项卡

    在Android应用开发中,选项卡(Tab)是一个常见的UI组件,用于展示多个相互关联的视图或内容。它可以帮助用户在不同的功能之间轻松切换,提高应用程序的可用性和用户体验。本教程将详细介绍如何在Android中快速实现...

    VB_仿360安全卫士Tab选项卡

    在VB(Visual Basic)编程中,创建仿360安全卫士Tab选项卡是一项常见的界面设计任务,旨在提供用户友好的多页面体验。这个主题主要涉及控件的使用、事件处理以及用户界面(UI)的设计。以下是关于VB中实现Tab选项卡...

    android 导航选项卡效果源码.zip

    1. **选项卡布局(Tab Layout)** - Android中的选项卡布局通常通过`TabLayout`组件来实现,它是谷歌Material Design设计系统的一部分,可以与`ViewPager`配合使用,实现滑动切换页面的效果。 - `TabLayout`允许...

    (0029)-iOS/iPhone/iPAD/iPod源代码-选项卡(Tab Bar)-Raised Center Tab Bar

    在本项目“(0029)-iOS/iPhone/iPad/iPod源代码-选项卡(Tab Bar)-Raised Center Tab Bar”中,我们关注的是一个自定义的`UITabBar`实现,它具有一个突出中心Tab的独特设计。这种设计风格在Instagram和Path等...

    Android平台下切换选项卡的功能实现

    在Android平台上,实现切换选项卡的功能是构建用户界面(UI)的一个常见需求,尤其是在开发复杂的移动应用时。这种功能能够帮助用户在多个视图或功能之间轻松导航,提高用户体验。在本篇中,我们将深入探讨如何在...

    安卓FragmentTab选项卡相关-一个扩展了Fragment动画效果的库.rar

    FragmentTab选项卡是Android界面设计中常见的一种布局方式,通常用于创建一个多页面、可切换的用户界面。FragmentTab结合了Fragment和TabHost的概念,使用户可以在不同的Tab之间轻松切换,每个Tab下展示不同的...

    Android tab 左右可滑动跳转

    在Android开发中,创建一个可左右滑动切换的Tab布局是一项常见的需求,这通常涉及到`ViewPager`和`TabLayout`的使用。`ViewPager`允许用户通过左右滑动来浏览多个页面,而`TabLayout`则提供了在顶部展示标签页的功能...

    easyui layout+tab+tree实现网站基本布局

    通过调用`$.tabs`方法并传入相应的选项,可以实现动态添加、删除和切换选项卡。 再来看`EasyUI tree` 组件,它主要用于展示层次结构的数据,如目录结构、组织架构等。EasyUI的tree组件支持多种操作,如展开/折叠...

    Android Activity+Fragment选项卡整理

    本篇将深入探讨如何利用Activity和Fragment来实现一个主界面的选项卡功能。 在Android中,选项卡通常用于在有限的空间内展示多个相互关联的视图。我们可以使用TabHost、ViewPager、TabLayout(搭配ViewPager)等...

    (0101)-iOS/iPhone/iPAD/iPod源代码-选项卡(Tab Bar)-TweetBot TabBar

    在iOS应用开发中,选项卡(Tab Bar)是一种常见的用户界面元素,用于提供多视图间的导航。在本教程中,我们将深入探讨如何实现类似TweetBot应用中的自定义Tab Bar,包括文字、颜色、图片的定制,以及选中状态下的...

    TabLayout实现顶部tab选项卡,类似百度外卖登陆界面的tab选项卡

    在Android应用开发中,创建一个具有可滑动选项卡的用户界面是常见的需求,比如百度外卖和美团登录页面。TabLayout是Google推出的Android Design Support Library的一部分,它提供了一种优雅的方式来实现这种效果。本...

    Android新手入门2016(13)--FragmentTabHost实现选项卡和菜单

    这篇教程《Android新手入门2016(13)--FragmentTabHost实现选项卡和菜单》将引导我们如何在实践中运用这一技术。 首先,FragmentTabHost是TabHost与Fragment的结合体,它解决了在Android 3.0及以上版本中TabHost...

Global site tag (gtag.js) - Google Analytics