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就可以了。

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。