您的位置:首页 > 其它

TabHost两种实现方式

2013-10-07 22:13 253 查看
1.第一种:继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。只要定义具体Tab内容布局就行了.

<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));


2:不用继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是

@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent。TabHost的id可以自定义.

<?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;*/
		}
	}


参考:

原文地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: