`

Androd之标签页面切换(18)

阅读更多

标签,在使用手机中经常会用到标签,首先我们用继承TabActivity来实现一个简单标签。

首先认识TabHost相当于放标签的容器,Tabspec就是意义上的标签了,这里我们定义了三个标签分别用不同组件加以区别,首先定义布局管理器tab.xml

<LinearLayout xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/tab1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <AnalogClock
            android:id="@+id/analogClock1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <DigitalClock
            android:id="@+id/digitalClock1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="DigitalClock" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tab2"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <RatingBar
            android:id="@+id/ratingBar1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
       
    </LinearLayout>

    <LinearLayout
        android:id="@+id/tab3"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <DialerFilter
            android:id="@+id/dialerFilter1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <EditText
                android:id="@android:id/hint"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Hint" />

            <EditText
                android:id="@android:id/primary"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@android:id/hint"
                android:text="Primary" />
        </DialerFilter>

        <RadioGroup
            android:id="@+id/radioGroup1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <RadioButton
                android:id="@+id/radio0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:text="男" />

            <RadioButton
                android:id="@+id/radio1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="女" />

            <RadioButton
                android:id="@+id/radio2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="其他" />
        </RadioGroup>

    </LinearLayout>

</LinearLayout>

 

内嵌三个布局管理器用来显示

接下来看activity代码:

public class MainActivity extends TabActivity {

	private TabHost mytabhost=null;
	private int tab[]={R.id.tab1,R.id.tab2,R.id.tab3};//将要显示的三个标签布局管理器id
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//自定义组件
		this.mytabhost=super.getTabHost();//取得Tabhost
		LayoutInflater.from(this).inflate(R.layout.tab,//定义转换的布局管理器
				this.mytabhost.getTabContentView(),//指定标签增加的容器
				true);//实例化布局管理中的组件
		for(int i=0;i<tab.length;i++){
			TabSpec mytab=mytabhost.newTabSpec("tab"+i);//定义tabspec
			mytab.setIndicator("标签"+i);//设置标签文字
			mytab.setContent(tab[i]);//设置标签组件
			this.mytabhost.addTab(mytab);//添加标签
		}
		
	}

}

 

运行效果如下:




 


  • 第二种方法,继承自Activity类

定义tab.xml

<?xml version="1.0" encoding="utf-8"?>
<TabHost 
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 
	android:id="@+id/tabhost"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<LinearLayout 
		xmlns:android="http://schemas.android.com/apk/res/android"
		android:orientation="vertical" 
		android:layout_width="fill_parent"
		android:layout_height="fill_parent">
		<TabWidget
			android:id="@android:id/tabs"
			android:layout_width="fill_parent"
			android:layout_height="wrap_content"
			android:layout_alignParentTop="true" />
		<FrameLayout 
			xmlns:android="http://schemas.android.com/apk/res/android"
			android:id="@android:id/tabcontent"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent">
			<LinearLayout 
				xmlns:android="http://schemas.android.com/apk/res/android"
				android:id="@+id/tab_edit"
				android:orientation="vertical" 
				android:layout_width="fill_parent"
				android:layout_height="fill_parent">
				<EditText
					android:id="@+id/edit" 
					android:layout_width="wrap_content"
					android:layout_height="wrap_content" 
					android:text="请输入检索关键字..."
					android:textSize="18px" />
				<Button
					android:id="@+id/but"
					android:layout_width="wrap_content"
					android:layout_height="wrap_content"
					android:text="搜索" />
			</LinearLayout>
			<LinearLayout 
				xmlns:android="http://schemas.android.com/apk/res/android"
				android:id="@+id/tab_clock"
				android:orientation="vertical" 
				android:layout_width="fill_parent"
				android:layout_height="fill_parent">
				<AnalogClock
					android:id="@+id/myAnalogClock" 
					android:layout_width="wrap_content"
					android:layout_height="wrap_content"/>
			</LinearLayout>
			<LinearLayout 
				xmlns:android="http://schemas.android.com/apk/res/android"
				android:id="@+id/tab_sex"
				android:orientation="vertical" 
				android:layout_width="fill_parent"
				android:layout_height="fill_parent">
				<RadioGroup
					android:id="@+id/sex" 
					android:layout_width="wrap_content"
					android:layout_height="wrap_content"
					android:orientation="vertical">
					<RadioButton
						android:id="@+id/male"
						android:checked="true"
						android:text="性别:男" />
					<RadioButton
						android:id="@+id/female"
						android:text="性别:女" />
				</RadioGroup>
			</LinearLayout>
		</FrameLayout>
	</LinearLayout>
</TabHost>

 activity:

public class MyTabHostDemo extends Activity { // 继承了TabActivity
	private TabHost myTabHost;
	private int[] layRes = new int[] { R.id.tab_edit, R.id.tab_clock,
			R.id.tab_sex }; // 这些是内嵌布局文件的ID
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.tab) ; 
		this.myTabHost = (TabHost) super.findViewById(R.id.tabhost) ;
		this.myTabHost.setup() ;	// 建立TabHost对象 
		for (int x = 0; x < this.layRes.length; x++) {
			TabSpec myTab = this.myTabHost.newTabSpec("tab" + x) ;
			myTab.setIndicator("标签  - " + x) ;
			myTab.setContent(this.layRes[x]) ;
			this.myTabHost.addTab(myTab) ;
		}
		this.myTabHost.setCurrentTab(0) ;	// 默认显示的标签索引
	}
}

 

效果与上述一致

  • 大小: 87.9 KB
  • 大小: 87.7 KB
1
1
分享到:
评论

相关推荐

    Android之Fragment多个页面切换实现

    5. 为了实现更复杂的页面切换逻辑,可以监听`ViewPager`的`addOnPageChangeListener`,并在页面切换时执行相应的操作。 6. 如果需要在Fragment之间进行通信,可以使用`Interface`回调,或者使用`...

    Android实现底部切换标签

    本教程将详细讲解如何在Android项目中实现底部切换标签,以及如何利用Fragment来管理不同的页面内容。 首先,我们需要在布局XML文件中创建一个BottomNavigationView组件。这个组件是Android Support Library或...

    android 悬浮按钮切换页面

    总的来说,实现“android悬浮按钮切换页面”的功能涉及到对Android UI组件的理解,特别是FloatingActionButton的使用,以及事件监听、动画和页面切换等核心技能。通过这些技术的组合,开发者可以为用户提供直观且有...

    (1)android标签切换界面(重用版)

    `(1)android标签切换界面(重用版)` 提供了一种基于ViewPager、FragmentTabHost和Fragment的实现方式,这种实现方式允许我们高效地重用代码,同时保持良好的性能。 **ViewPager** 是Android SDK中的一个强大组件,...

    android页面切换动画实现

    在Android开发中,页面切换动画(Activity Transition Animation)是提升用户体验的重要一环。它不仅可以使应用更具吸引力,还能增加用户的互动感。本教程将详细讲解如何在Android中实现页面跳转时的动画效果,主要...

    (1)android标签切换界面(ViewPager版)

    在Android应用开发中,创建一个标签切换界面是一个常见的需求,它可以提供流畅的用户体验,让用户能够轻松地在不同的功能或内容之间切换。在这个场景中,我们使用了ViewPager、TabHost和Fragment这三个关键组件来...

    android各种activity页面切换特效

    本篇文章将深入探讨Android中实现各种Activity页面切换特效的方法。 一、默认动画 Android系统提供了两种默认的Activity切换动画:slide(滑动)和fade(淡入淡出)。滑动动画分为从右向左(如打开新页面)和从左向...

    Android Fragment底部点击切换标签以及滑动切换

    6. **滑动切换**:ViewPager默认支持滑动手势切换页面,但你还可以自定义滑动效果,如设置PageTransformer来改变页面切换的动画效果。 在项目"**MyApplication**"中,你可能会看到以下结构: - `MainActivity.java...

    android 左右滑动切换页面

    当用户在ViewPager中滑动时,PagerAdapter会自动加载相邻的页面,从而实现平滑的页面切换效果。 要实现"左右滑动切换Activity",首先需要创建一个TabHost,并设置其布局。然后,为每个要展示的Activity创建一个...

    Android实现类似浏览器可以新增标签页,可以随意多个标签之间来回切换

    在Android平台上,构建一个类似浏览器的应用,实现多标签页切换是一项常见的需求。这涉及到对Android系统框架的理解,尤其是Activity管理、Fragment操作以及UI设计。以下将详细解析如何实现这一功能。 1. **...

    Android滑动切换tab(切换带动画)

    在Android中,Tab通常用于展示多个相关但互不干扰的视图,用户可以通过滑动或者点击Tab标签来切换不同视图。这种设计模式在许多应用中都得到了广泛的应用,例如新闻阅读器、音乐播放器等。 要实现滑动切换Tab,我们...

    android左右滑动切换页面

    `ViewPager`的优点在于它可以自动处理页面之间的滑动动画,使得页面切换平滑自然,提高了用户体验。 要实现"左右滑动切换页面",首先需要在布局文件中添加`ViewPager`。例如,在XML布局中: ```xml &lt;androidx....

    android底部切换标签

    在Android应用开发中,"底部切换标签"是一种常见的设计模式,用于实现多页面间的便捷切换。这个设计通常出现在底部导航栏,用户可以通过点击不同的图标在各个功能模块间切换。本篇将详细介绍如何在Android中实现这样...

    TabLayout+ViewPager,切换页面,可点击,可滑动

    将 `TabLayout` 与 `ViewPager` 结合使用,可以实现更直观、友好的页面切换体验。以下是一个基本的集成步骤: 1. 在布局文件中添加 `TabLayout` 和 `ViewPager`,并为它们设置相应的 ID。 ```xml &lt;androidx....

    (1)android标签切换界面(button版)

    在Android开发中,创建一个标签切换界面是一种常见的需求,它能提供多视图间的便捷切换。本教程将重点讲解如何利用Button和Fragment实现这一功能。首先,我们需要了解Button和Fragment的基本概念。 Button是Android...

    实现底部切换标签+左右滑动切换页面

    2. 动画效果:为增加用户体验,可以在页面切换时添加过渡动画,如淡入淡出、滑动等。 3. 状态管理:确保在用户切换页面时,上一个页面的状态被正确保存,新的页面能够正确加载数据。 4. 响应式布局:保证在不同尺寸...

    Android Fragment ActionBar实现tab标签切换页面

    以上就是使用`Android Fragment`和`ActionBar`实现tab标签切换页面的基本流程和关键知识点。开发者可以根据实际需求对这一过程进行扩展和定制,例如添加动画效果、自定义tab样式等。在实践中,你还可以使用`...

    Android-实现切换Fragment页功能的实现代码

    在实现Fragment页切换时,通常在一个Activity中添加并管理多个Fragment,通过切换显示不同的Fragment来实现页面效果。 以下是一些关键步骤和代码示例: 1. **在Activity中添加初始Fragment** 在Activity的布局XML...

    Android标签的显示

    在导航抽屉或底部导航栏场景中,这些标签表示不同的页面或功能模块,通常与`FragmentManager`配合使用,实现页面间的切换。 7. **Android Jetpack中的NavGraph和NavController** 使用Android Jetpack的Navigation...

Global site tag (gtag.js) - Google Analytics