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