首页 > 代码库 > Android TabHost底部显示

Android TabHost底部显示

刚开始从网上找了一些代码,使用的是TabActivity,但运行的时候总是异常退出,后来看帮助说4.0版TabActivity已过时,要用Fragment替代。。。。然后修来改去。。。。。。一直不能正常运行。。。。。。

后来下定决心还是用TabActivity去试试,一个个错误去查找,终于好了。。。。。。。。

布局:main_tab.xml

<?xml version="1.0" encoding="utf-8"?><RelativeLayout     xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent">     <!-- ID要用android系统的ID -->
   <TabHost android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@android:id/tabhost" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="3dp"> <!-- 内容:ID要用android系统的ID --> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/main_radio" android:layout_weight="1" android:background="#FFF" > </FrameLayout> <!-- 标签:ID要用android系统的ID --> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone" /> <!-- 按钮 --> <RadioGroup android:id="@+id/main_radio" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ccc" android:orientation="horizontal" android:layout_alignParentBottom="true"> <RadioButton android:id="@+id/tab_btn_quality" style="@style/main_tab_bottom" android:checked="false" android:text="@string/menu_quality" /> <RadioButton android:id="@+id/tab_btn_sop" style="@style/main_tab_bottom" android:checked="true" android:text="@string/menu_sop" /> <RadioButton android:id="@+id/tab_btn_video" style="@style/main_tab_bottom" android:checked="false" android:text="@string/menu_video" /> <RadioButton android:id="@+id/tab_btn_logout" style="@style/main_tab_bottom" android:checked="false" android:text="@string/menu_logout" /> </RadioGroup> </RelativeLayout> </TabHost></RelativeLayout>

 

样式:style.xml

<style name="main_tab_bottom">        <item name="android:textSize">13sp</item>        <item name="android:textStyle">bold</item>        <item name="android:textColor">@android:color/white</item>        <item name="android:gravity">center_horizontal</item>                <item name="android:paddingTop">5dp</item>        <item name="android:layout_width">fill_parent</item>        <item name="android:layout_height">wrap_content</item>        <item name="android:layout_weight">1.0</item>                <item name="android:button">@null</item>                <item name="android:layout_marginTop">1.0dip</item>        <item name="android:paddingBottom">5.0dip</item>                <item name="android:background">@drawable/selector_tab_btn</item></style>

 

按钮背景:selector_tab_btn.xml

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" >        <!-- 选择时背景 -->       <item android:drawable="@drawable/tab_bg_sel" android:state_checked="true" />        <!-- 默认状态背景 -->    <item android:drawable="@drawable/tab_bg"></item></selector>

 

代码:MainActivity.java

package com.example.test;import android.os.Bundle;import android.app.Activity;import android.app.TabActivity;import android.view.Menu;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.TabHost;import android.widget.TabWidget;import android.content.Intent;import android.content.res.Resources;//public class MainActivity extends Activity@SuppressWarnings("deprecation")public class MainActivity extends TabActivity{	public static TabHost mTabHost;		public static TabHost getmTabHost()	{		return mTabHost;	}		private RadioGroup mMain_radiogroup;	private RadioButton mTab_btn_quality,mTab_btn_sop,mTab_btn_video,mTab_btn_logout;		@Override	protected void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.main_tab);				Resources resources = getResources();		mTabHost = getTabHost();						//去掉圆角边线,好像没啥用,界面中看不出什么		TabWidget tabWidget = mTabHost.getTabWidget();		tabWidget.setStripEnabled(false);				//添加标签页 		mTabHost.addTab(mTabHost.newTabSpec(resources.getString(R.string.menu_tag_quality)).setIndicator(resources.getString(R.string.menu_tag_quality)).setContent(new Intent(this, Tab_Quality.class)));		mTabHost.addTab(mTabHost.newTabSpec(resources.getString(R.string.menu_tag_sop)).setIndicator(resources.getString(R.string.menu_tag_sop)).setContent(new Intent(this, Tab_SOP.class)));		mTabHost.addTab(mTabHost.newTabSpec(resources.getString(R.string.menu_tag_video)).setIndicator(resources.getString(R.string.menu_tag_video)).setContent(new Intent(this, Tab_Video.class)));		//mTabHost.addTab(mTabHost.newTabSpec(resources.getString(R.string.menu_tag_logout)).setIndicator(resources.getString(R.string.menu_tag_logout)).setContent(new Intent(this, LoginActivity.class)));				//关联控件与变量		mMain_radiogroup = (RadioGroup)findViewById(R.id.main_radio);		mTab_btn_quality = (RadioButton)findViewById(R.id.tab_btn_quality);		mTab_btn_sop = (RadioButton)findViewById(R.id.tab_btn_sop);		mTab_btn_video = (RadioButton)findViewById(R.id.tab_btn_video);		mTab_btn_logout = (RadioButton)findViewById(R.id.tab_btn_logout);				//单选钮选择事件		mMain_radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {						@Override			public void onCheckedChanged(RadioGroup group, int checkedId) {				// TODO Auto-generated method stub								Resources resources = getResources();				if(checkedId == mTab_btn_quality.getId())				{					mTabHost.setCurrentTabByTag(resources.getString(R.string.menu_tag_quality));				}				else if(checkedId == mTab_btn_sop.getId())				{					mTabHost.setCurrentTabByTag(resources.getString(R.string.menu_tag_sop));				}				else if(checkedId == mTab_btn_video.getId())				{					mTabHost.setCurrentTabByTag(resources.getString(R.string.menu_tag_video));				}				else if(checkedId == mTab_btn_logout.getId())				{					//mTabHost.setCurrentTabByTag(resources.getString(R.string.menu_tag_logout));					//退出到登录界面					Intent intent = new Intent();					intent.setClass(MainActivity.this, LoginActivity.class);					startActivity(intent);					MainActivity.this.finish();				}			}		});				//设置程序默认打开的标签		mTabHost.setCurrentTabByTag(resources.getString(R.string.menu_tag_sop));			}	@Override	public boolean onCreateOptionsMenu(Menu menu) {		// Inflate the menu; this adds items to the action bar if it is present.		getMenuInflater().inflate(R.menu.main, menu);		return true;	}}

至于tab里面实际的内容,直接新建几个Activity就可以了。

然后运行就可以了。。。。

Android TabHost底部显示