最近文章

最近文章
您当前所在位置:主页 > 最近文章 >

从零开始学android<TabHost标签组件.二十九.>,androidtabhost

发布日期:2019年02月01 编辑:

从零开始学android<TabHost标签组件.二十九.>,androidtabhost
TabHost主要特点是可以在一个窗口中显示多组标签栏的内容,在Android系统之中每个标签栏就称为一个Tab,而包含这多个标签栏的容器就将其称为TabHost,TabHost类的继承结构如下所示: java.lang.Object    ↳ android.view.View      ↳ android.view.ViewGroup        ↳ android.widget.FrameLayout          ↳ android.widget.TabHost 
常用方法如下所示

1 public TabHost(Context context) 构造 创建TabHost类对象
2 public void addTab(TabHost.TabSpec tabSpec) 普通 增加一个Tab
3 public TabHost.TabSpec newTabSpec(String tag) 普通 创建一个TabHost.TabSpec对象
4 public View getCurrentView() 普通 取得当前的View对象
5 public void setup() 普通 建立TabHost对象
6 public void setCurrentTab(int index) 普通 设置当前显示的Tab编号
7 public void setCurrentTabByTag(String tag) 普通 设置当前显示的Tab名称
8 public FrameLayout getTabContentView() 普通 返回标签容器
9 public void setOnTabChangedListener (TabHost.OnTabChangeListener l) 普通 设置标签改变时触发

两种方式实现TabHost
方式一:直接让一个Activity程序继承TabActivity类; 方式二:利用findViewById()方法取得TagHost组件,并进行若干配置;
第一种方式让一个类继承tabActivity
XMl文件 配置需要在一个xml文件中嵌套使用布局 来达到不同Tab中显示不同的内容
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_marginTop="50dp"
        android:id="@+id/login"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="账号" />

            <EditText
                android:id="@+id/editText1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:textSize="25sp" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="密码" />

            <EditText
                android:id="@+id/editText2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:textSize="25sp" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/button1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="取消" />

            <Button
                android:id="@+id/button2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="登录" />
        </TableRow>
    </LinearLayout>

    <LinearLayout
        android:layout_marginTop="50dp"
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/a2" />
    </LinearLayout>

    <LinearLayout
        android:layout_marginTop="50dp"
        android:id="@+id/timer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TimePicker
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
 <LinearLayout
        android:layout_marginTop="50dp"
        android:id="@+id/timer1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TimePicker
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
     <LinearLayout
        android:layout_marginTop="50dp"
        android:id="@+id/timer2"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TimePicker
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
</LinearLayout>


JAVA文件设置

package com.example.tabhost;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class MainActivity extends TabActivity {
	private TabHost tabHost;//初始化TabHost组件
	private int reslayout[] = { R.id.login, R.id.image, R.id.timer , R.id.timer1,R.id.timer2};//设置对应的额xml文件
	private int images[]={R.drawable.cart,R.drawable.cloud,R.drawable.comment,R.drawable.gear,R.drawable.joystick};//设置显示的标题文件

	@SuppressWarnings("deprecation")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		this.tabHost = super.getTabHost();//实例化TabHost组件
		// 取得LayoutInflater对象
		LayoutInflater.from(this).inflate(R.layout.linearlayout,//制定布局
				this.tabHost.getTabContentView(),//制定标签增加的容器 
				true);
		
		for (int i = 0; i < reslayout.length; i++) {
			TabSpec myTab = tabHost.newTabSpec("tab" + i);// 定义TabSpec
			myTab.setIndicator(null,getResources().getDrawable(images[i])) ;		// 设置标签
			
			myTab.setContent(this.reslayout[i]) ;		// 设置显示的组件
			this.tabHost.addTab(myTab) ;
		}
	}

}

效果图如下



使用TabHost组件设置Tab切换与intent的结合在开发中较常用到,是app开发框架的基础
下节预报: Menu菜单


android TabHost label 透明 怎让TabHost里面的标签变得透明,包括里面的控件

你是想让tabhost更美观吧?
可以用自定义的tabhost,我这边有个Demo,你要我可以发给你
 
android里实现一个tabhost显示怎弄?

Tab标签页是界面设计时经常使用的界面控件,可以实现多个分页之间的快速切换,每个分页可以显示不同的内容,下图是Android系统内置的Tab标签页,点击“呼出/接听键”后出现,用于电话呼出和查看拨号记录、联系人.

Tab标签页的使用
先要设计所有的分页的界面布局
在分页设计完成后,使用代码建立Tab标签页,并给每个分页添加标识和标题
最后确定每个分页所显示的界面布局
每个分页建立一个XML文件,用以编辑和保存分页的界面布局,使用的方法与设计普通用户界面没有什么区别

建立一个“TabDemo”程序,包含三个XML文件,分别为tab1.xml、tab2.xml和tab3.xml,这3个文件分别使用线性布局、相对布局和绝对布局示例中的main.xml的代码,并将布局的ID分别定义为layout01、layout02和layout03

关键代码如下:
10. public void onCreate(Bundle savedInstanceState) {
11. super.onCreate(savedInstanceState);
12. TabHost tabHost = getTabHost();
13. LayoutInflater.from(this).inflate(R.layout.tab1, tabHost.getTabContentView(),true);
14. LayoutInflater.from(this).inflate(R.layout.tab2, tabHost.getTabContentView(),true);
15. LayoutInflater.from(this).inflate(R.layout.tab3, tabHost.getTabContentView(),true);
16. tabHost.addTab(tabHost.newTabSpec("TAB1")
17. .setIndicator("线性布局").setContent(R.id.layout01));
18. tabHost.addTab(tabHost.newTabSpec("TAB2")
19. .setIndicator("绝对布局").setContent(R.id.layout02));
20. tabHost.addTab(tabHost.newTabSpec("TAB3")
21. .setIndicator("相对布局").setContent(R.id.layout03));
22. }
23. }

第8行代码的声明TabDemo类继承与TabActivity,与以往继承Activity不同,TabActivity支持内嵌多个Activity或View
第12行代码通过getTabHost()函数获得了Tab标签页的容器,用以承载可以点击的Tab标签和分页的界面布局。
第13行代码通过LayoutInflater将tab1.xml文件中的布局转换为Tab标签页可以使用的View对象
第16行代码使用addTab()函数添加了第1个分页,tabHost.newTabSpec("TAB1")表明在第12行代码中建立的tabHost上,添加一个标识为TAB1的Tab分页
第17行代码使用s......余下全文>>
 

http://www.bkjia.com/Androidjc/868690.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/868690.htmlTechArticle从零开始学androidTabHost标签组件.二十九.,androidtabhost TabHost 主要特点是可以在一个窗口中显示多组标签栏的内容,在Android系统之中每个标签...

本文源自: 凯发国际

< 上一篇:分享 Process 执行命令行封装类

> 下一篇:没有了