• android学习--TabHost选项卡组件


            TabHost是一种非常有用的组件,TabHost能够非常方便地在窗体上放置多个标签页,每一个标签页获得了一个与外部容器同样大小的组件摆放区域。在手机系统的应用类似“未接电话”、“已接电话”、“呼出电话”等。

            1 、 TabHost提供了两个方法来创建选项卡、加入选项卡

                   newTabSpec(String tag)  : 创建选项卡

                  addTab(TabHost.TabSpec  tabSpec) : 加入选项卡


           2、TabHost 切换选项卡触发的监听是TabHost.OnTabChangeListener



    以下通过案例来熟悉TabHost

           使用TabHost的一般步骤为:

           (1)在界面布局中为TabHost定义改选项卡的内容

           (2)Activity继承TabActivity

           (3)调用TabActivity的getTabHost()方法获取TabHost对象

           (4)通过TabHost对象的方法来创建选项卡、加入选项卡


     跟着上面步骤来实现TabHost案例


    (1)在界面布局中为TabHost定义改选项卡的内容,一般採用FrameLayout作为根布局,每一个标签页面相应一个子节点的Layout

    <!-- 这是根布局 -->
     <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent" 
            android:layout_height="fill_parent">
          <!-- 这是第一个Tab布局 -->
            <LinearLayout 
                android:id="@+id/widget_layout_Blue"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent"
                android:orientation="vertical" >
                <EditText 
                    android:id="@+id/widget34"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" 
                    android:text="EditText"
                    android:textSize="18sp">
                </EditText>
                <Button 
                    android:id="@+id/widget30"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" 
                    android:text="Button">
                </Button>
            </LinearLayout>
            
             <!-- 这是第二个Tab布局 -->
            <LinearLayout 
                android:id="@+id/widget_layout_red"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"  >
                <AnalogClock android:id="@+id/widget36"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">
                </AnalogClock>
            </LinearLayout>
            
             <!-- 这是第三个Tab布局 -->
            <LinearLayout android:id="@+id/widget_layout_green"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent"
                android:orientation="vertical">
                <RadioGroup
                    android:id="@+id/widget43"
                    android:layout_width="166px"
                     android:layout_height="98px"
                    android:orientation="vertical">
                    <RadioButton android:id="@+id/widget44"
                        android:layout_width="wrap_content" 
                        android:layout_height="wrap_content"
                        android:text="男">
                    </RadioButton>
                    <RadioButton android:id="@+id/widget45"
                        android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                        android:text="女">
                    </RadioButton>
                </RadioGroup>
            </LinearLayout>
        </FrameLayout>

    (2)Activity继承TabActivity

    (3)调用TabActivity的getTabHost()方法获取TabHost对象

     (4)通过TabHost对象的方法来创建选项卡、加入选项卡


    package com.example.tabhost;
    
    import android.app.TabActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.widget.TabHost;
    import android.widget.TabHost.OnTabChangeListener;
    
    @SuppressWarnings("deprecation")
    public class MainActivity extends TabActivity
    {
    	@Override
    	public void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		
    		//获取TabHost 对象
    		TabHost tabHost = getTabHost();
    		//设置使用TabHost布局
    		//from(this)从这个TabActivity获取LayoutInflater
    		//R.layout.main 存放Tab布局
    		//通过TabHost获得存放Tab标签页内容的FrameLayout
    		//是否将inflate 拴系到根布局元素上
    		LayoutInflater.from(this).inflate(R.layout.activity_main,
    				tabHost.getTabContentView(), true);
    		
    		//加入第一个标签页
    		//setIndicator  加入表体,能够是view
    		//加入tab内容   布局
    		tabHost.addTab(tabHost.newTabSpec("tab1")
    			.setIndicator("TAB1")
    			.setContent(R.id.widget_layout_Blue)); 
    		
    		//加入第二个标签页
    		tabHost.addTab(tabHost.newTabSpec("tab2")
    			//在标签标题上放置图标
    			.setIndicator("TAB2")
    			.setContent(R.id.widget_layout_red)); 
    		
    		//加入第三个标签页
    		tabHost.addTab(tabHost.newTabSpec("tab3")
    			.setIndicator("TAB3")
    			.setContent(R.id.widget_layout_green)); 	
    		
    		//加入监听
    		tabHost.setOnTabChangedListener(new OnTabChangeListener() {
    			
    			@Override
    			public void onTabChanged(String tabId) {
    			   Log.i("Tab", tabId);
    				
    			}
    		});
    	}
    }

    执行后,效果例如以下:



  • 相关阅读:
    递归算法转换为非递归算法的技巧
    22. 平面列表
    14. 二分查找
    那点人生小智慧
    9. Fizz Buzz 问题
    8. 旋转字符串
    6. 合并排序数组:
    归并排序
    远方的她
    微服务体系下如何快速构建一个服务
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4026978.html
Copyright © 2020-2023  润新知