`
zxl_ong
  • 浏览: 128730 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

TabHost两种实现方式

阅读更多
第一种:继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。只要定义具体Tab内容布局就行了.

xml布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent" android:layout_height="fill_parent">
	<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>
	<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>
	<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>
			<RadioButton android:id="@+id/widget45"
				android:layout_width="wrap_content" android:layout_height="wrap_content"
				android:text="RadioButton">
			</RadioButton>
		</RadioGroup>
	</LinearLayout>
</FrameLayout>

java代码:
super.onCreate(savedInstanceState);
		myTabhost=this.getTabHost();
		//get Tabhost
		LayoutInflater.from(this).inflate(R.layout.main, myTabhost.getTabContentView(), true);
		myTabhost.setBackgroundColor(Color.argb(150, 22, 70, 150));
		
		myTabhost
				.addTab(myTabhost.newTabSpec("One")// make a new Tab
						.setIndicator("A")
						// set the Title and Icon
						.setContent(R.id.widget_layout_Blue));
		// set the layout

		myTabhost
				.addTab(myTabhost.newTabSpec("Two")// make a new Tab
						.setIndicator("B",
								getResources().getDrawable(R.drawable.mumule))
						// set the Title and Icon
						.setContent(R.id.widget_layout_green));
		// set the layout

		myTabhost
				.addTab(myTabhost.newTabSpec("Three")// make a new Tab
						.setIndicator("C",
								getResources().getDrawable(R.drawable.notepad))
						// set the Title and Icon
						.setContent(R.id.widget_layout_red));


第二种:不用继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是
@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent。TabHost的id可以自定义.

xml布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
	android:id="@+id/hometabs"
	android:orientation="vertical"
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"> 
    <TabHost android:id="@+id/tabhost"
     	android:layout_width="wrap_content"
     	android:layout_height="wrap_content">
     	<LinearLayout
			android:orientation="vertical"
			android:layout_width="fill_parent"
			android:layout_height="fill_parent">
			
	     	<TabWidget android:id="@android:id/tabs" 
		      android:orientation="horizontal"
		      android:layout_width="wrap_content"
		      android:layout_height="wrap_content">
	        </TabWidget>
	     
		     <FrameLayout android:id="@android:id/tabcontent"
			      android:layout_width="wrap_content"
			      android:layout_height="wrap_content">
			      	<TextView android:id="@+id/view1"
				        android:layout_width="fill_parent"
				        android:layout_height="fill_parent"/>
			    	<TextView android:id="@+id/view2"
				        android:layout_width="fill_parent"
				        android:layout_height="fill_parent"/>
			    	<TextView android:id="@+id/view3"
				        android:layout_width="fill_parent"
				        android:layout_height="fill_parent"/>
		     </FrameLayout>
	     
	     </LinearLayout>
    </TabHost>
</LinearLayout>

java代码:
protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.hometabs);
        
        TabHost tabHost = (TabHost) findViewById(R.id.tabhost);
        tabHost.setup();
        TabWidget tabWidget = tabHost.getTabWidget();
        
        tabHost.addTab(tabHost.newTabSpec("tab1")
                .setIndicator("tab1", getResources().getDrawable(R.drawable.mumule))
                .setContent(R.id.view1));
        
        tabHost.addTab(tabHost.newTabSpec("tab3")
                .setIndicator("tab3")
                .setContent(R.id.view3));
        
        tabHost.addTab(tabHost.newTabSpec("tab2")
                .setIndicator("tab2")
                .setContent(R.id.view2));
        
        final int tabs = tabWidget.getChildCount();
        Log.i(TAG, "***tabWidget.getChildCount() : " + tabs);
        
        final int tabWidth = 90;
		final int tabHeight = 45;
		
		for (int i = 0; i < tabs; i++) {
		/*	final View view = tabWidget.getChildAt(i);
			view.getLayoutParams().width = tabWidth;
			view.getLayoutParams().height = tabHeight;
			final TextView tv = (TextView) view.findViewById(android.R.id.title);
		    tv.setTextColor(this.getResources().getColorStateList(android.R.color.black));
		    MarginLayoutParams tvMLP = (MarginLayoutParams)tv.getLayoutParams();
		    tvMLP.bottomMargin = 8;*/
		}
	}
  • Tab.rar (130.9 KB)
  • 下载次数: 1250
分享到:
评论
2 楼 cenyi2012 2014-01-13  
来个图文并茂不是更好。。。
1 楼 dahutiger 2010-12-10  
神马东西?

相关推荐

    TabHost的各种实现方式

    - 在Android 3.0及以上版本,Action Bar提供了一种新的Tab实现方式。虽然现在推荐使用ViewPager配合TabLayout,但了解Action Bar的Tab模式可以帮助理解TabHost的历史演变。 7. **使用第三方库**: - 如`androidx....

    TabHost的两种使用方式

    在Android开发中,TabHost是一个重要的组件,用于创建带有可切换标签的用户界面。它允许开发者将多个小部件或活动组织成不同的标签页,提供了一种直观的...在实际开发中,开发者可以根据项目需求选择合适的实现方式。

    TabHost+ViewPager实现滑动tabhost

    在Android开发中,TabHost和ViewPager是两种常用的组件,它们可以结合起来创建出具有滑动切换效果的界面。本文将深入探讨如何使用TabHost与ViewPager来实现这一功能,并提供相关的源码解析。 首先,TabHost是...

    两种特殊Tabhost实现

    本篇文章将详细讲解如何实现两种特殊的TabHost,一种是模仿网易新闻应用底部导航栏的实现方式。 首先,我们来了解基本的TabHost用法。TabHost通常由两个主要部分组成:TabWidget(选项卡)和FrameLayout(内容区域...

    非常棒的TabHost+ViewPager实现的UI框架

    在Android开发中,TabHost和ViewPager是两种常用的组件,它们可以用来构建用户界面,提供丰富的交互体验。TabHost常用于创建具有多个标签页的应用,而ViewPager则用于实现页面的滑动切换,两者结合能实现一个功能...

    TabHost实现的分页

    在Android开发中,TabHost是一个非常重要的组件,用于创建具有...总的来说,TabHost是Android早期实现多页面导航的一种方式,虽然现在有更多先进的解决方案,但它依然是理解Android UI设计和分页机制的一个重要知识点。

    类似新浪布局的两种不同实现方法(Fragment和TabHost)

    本教程将探讨两种不同的实现方法:使用`Fragment`和`TabHost`。这两种技术都是Android SDK提供的,用于构建复杂的用户界面,尤其是处理多个可切换的内容区域。 ### 1. Fragment 实现 `Fragment`是Android 3.0(API...

    tabhost实现Android底部导航

    在Android开发中,...同时,随着Android版本的更新,谷歌推出了新的底部导航实现方式,如BottomNavigationView,虽然TabHost在现代Android开发中使用较少,但在一些旧项目或简单应用中,它仍然是一个实用的选择。

    TabHost + ViewFlipper实现滑动翻页

    `TabHost` 是Android SDK提供的一种容器,它可以容纳多个`TabWidget`(标签)和一个`FrameLayout`(内容区域)。每个`Tab`对应一个独立的`Activity`或者`Fragment`,点击不同的`Tab`时,显示相应的内容。在`TabHost`...

    安卓 tabhost嵌套tabhost

    在Android开发中,TabHost是一个非常重要的组件,用于创建具有多个选项卡的用户界面,每个选项卡都可以承载不同的活动(Activity)或者...要确保良好的用户体验,开发者应当根据项目需求选择最合适的选项卡实现方式。

    tabHost实现底部菜单

    `TabHost`是Android SDK提供的一种用于创建带有标签页的UI组件,它允许用户在不同的内容之间进行切换。`TabHost`包含两个主要部分:`TabWidget`(显示标签)和`FrameLayout`(显示内容)。`TabHost`的工作原理是,每...

    android Tabhost 实现底部菜单效果

    在Android开发中,TabHost是实现底部导航菜单的一种传统方式,它允许用户在多个标签页之间切换,每个标签页通常代表一个不同的功能区域。本文将详细介绍如何使用TabHost来创建带有图片和文字,并且在选中时有明显...

    详解Android TabHost的多种实现方法 附源码下载

    在实际开发中,选择哪种实现方式取决于项目需求和个人偏好。不继承`TabActivity`的方式更加灵活,可以避免不必要的Activity层级,而继承`TabActivity`则更简洁,适合快速搭建多标签页面。 由于篇幅原因,以上内容仅...

    Android 嵌套TabHost示例

    本示例是关于如何在Android中实现嵌套的TabHost,即两个层级的TabHost,类似于网页中的二级菜单栏,这种设计可以提供更丰富的用户交互体验。 首先,我们要理解TabHost的基本概念。TabHost是一个容器,它可以包含一...

    用TabHost实现带红点的选项卡界面

    TabHost包含两个主要部分:TabWidget和FrameLayout。TabWidget负责显示选项卡,而FrameLayout(通常称为"content"或"id/tabcontent")则用于展示与每个选项卡关联的内容。每个选项卡可以关联一个单独的Activity或者...

    使用TabActivity简单实现TabHost显示

    在Android开发中,TabHost和TabWidget是两个关键组件,用于创建具有标签切换功能的界面。TabHost可以理解为一个容器,它包含了多个TabWidget(标签)和一个FrameLayout(内容区域)。TabWidget用于显示各个标签,...

    tabhost跟viewPager结合实现滑动tabhost

    在Android开发中,TabHost和ViewPager是两种常用的组件,它们分别用于实现标签栏和页面滑动效果。将两者结合可以创建出一个具有可滑动标签的动态应用界面,这种设计在许多应用程序中都非常常见,如社交应用、新闻...

    android通过tabhost实现标签页

    `TabHost`是Android SDK提供的一种原生组件,用于实现这种多标签页的布局。本篇文章将深入探讨如何利用`TabHost`在Android中创建标签页。 ### 一、TabHost基本概念 `TabHost`是Android中的一个容器类,它允许...

Global site tag (gtag.js) - Google Analytics