欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

采用TabHost和RadioButton实现页面导航效果

程序员文章站 2022-03-21 16:02:43
...
实现的效果不解释,主要是记录一下代码

先看一下xml布局:

<?xml version="1.0" encoding="UTF-8"?><TabHost xmlns:android="schemas.android.com/apk/res/android"    android:id="@android:id/tabhost"    android:layout_width="fill_parent"    android:layout_height="fill_parent" >    <LinearLayout        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:orientation="vertical" >        
<FrameLayout            
android:id="@android:id/tabcontent"            
android:layout_width="fill_parent"           
android:layout_height="0.0dip"           
android:layout_weight="1.0" />      
<TabWidget          
android:id="@android:id/tabs"        
android:layout_width="fill_parent"      
android:layout_height="wrap_content"    
android:layout_weight="0.0"        
android:background="@drawable/maintab_toolbar_bg"            
android:visibility="gone" />        
<RadioGroup            

android:id="@id/main_radio"            
android:layout_width="fill_parent"            
android:layout_height="wrap_content"          
android:layout_gravity="bottom"         
android:background="@drawable/maintab_toolbar_bg"          
android:gravity="center_vertical"      
android:orientation="horizontal" >         
<RadioButton             
android:id="@id/radio_contact"          
style="@style/main_tab_bottom"        
android:drawableTop="@drawable/main_tab_contact_checked"                
android:text="@string/radio_contact" />            
<RadioButton                
android:id="@id/radio_calllist"                
style="@style/main_tab_bottom"                
android:layout_marginTop="0dip"                
android:layout_marginBottom="0dip"                
android:drawableTop="@drawable/main_tab_calllist_normal"                
android:text="@string/radio_calllist" />            
<RadioButton                
android:id="@id/radio_sms"                
style="@style/main_tab_bottom"                
android:layout_marginTop="0dip"                
android:layout_marginBottom="0dip"                
android:drawableTop="@drawable/main_tab_sms_normal"                
android:text="@string/radio_sms" />            
<RadioButton                
android:id="@id/radio_setting"                
style="@style/main_tab_bottom"                
android:layout_marginTop="0dip"                 
android:layout_marginBottom="0dip"                
android:drawableTop="@drawable/nav_menu_me"                
android:text="@string/radio_setting" />        
</RadioGroup>    
</LinearLayout></TabHost>

二、MainTabActivity

package com.gs.app.main;import android.app.TabActivity;import android.content.Intent;
import android.os.Bundle;import android.view.Window;import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.RadioButton;import android.widget.TabHost;
import com.gs.Appblue.R;import com.gs.app.contact.ContactsListActivity;
import com.gs.app.contact.RecentCallsListActivity;
import com.gs.app.setting.Setting;
import com.gs.app.sms.ActSMSList;
public class MainTabActivity extends TabActivity implementsOnCheckedChangeListener
{private TabHost mTabHost;private Intent mContactIntent;private Intent mCallLogIntent;private Intent mSmsIntent;
private Intent mSetIntent;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.main_tab);
this.mContactIntent = new Intent(this, ContactsListActivity.class);
this.mCallLogIntent = new Intent(this, RecentCallsListActivity.class);
this.mSmsIntent = new Intent(this, ActSMSList.class);
this.mSetIntent = new Intent(this, Setting.class);
((RadioButton) findViewById(R.id.radio_contact)).setOnCheckedChangeListener(this);
((RadioButton) findViewById(R.id.radio_calllist)).setOnCheckedChangeListener(this);
((RadioButton) findViewById(R.id.radio_sms)).setOnCheckedChangeListener(this);
((RadioButton) findViewById(R.id.radio_setting)).setOnCheckedChangeListener(this);
setupIntent();}private void setupIntent() {this.mTabHost = getTabHost();
TabHost localTabHost = this.mTabHost;
localTabHost.addTab(buildTabSpec("A_TAB", R.string.radio_contact,R.drawable.main_tab_contact_normal, this.mContactIntent));localTabHost.addTab(buildTabSpec("B_TAB", R.string.radio_calllist,R.drawable.main_tab_calllist_normal, 
this.mCallLogIntent));localTabHost.addTab(buildTabSpec("C_TAB", R.string.radio_sms,R.drawable.main_tab_sms_normal, this.mSmsIntent));localTabHost.addTab(buildTabSpec("D_TAB", R.string.radio_setting,R.drawable.main_tab_setting_normal, this.mSetIntent));
localTabHost.setCurrentTab(0);}@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {if (isChecked) {switch (buttonView.getId()) {case R.id.radio_contact:this.mTabHost.setCurrentTabByTag("A_TAB");
break;case R.id.radio_calllist:this.mTabHost.setCurrentTabByTag("B_TAB");break;case R.id.radio_sms:this.mTabHost.setCurrentTabByTag("C_TAB");break;case R.id.radio_setting:this.mTabHost.setCurrentTabByTag("D_TAB");break;}}}private TabHost.TabSpec buildTabSpec(String tag, int resLabel, int resIcon,final Intent content) 
{return this.mTabHost.newTabSpec(tag).setIndicator(getString(resLabel),getResources().getDrawable(resIcon)).setContent(content);}}