採用TabHost和RadioButton實現頁面導航效果

實現的效果不解釋,主要是記錄一下代碼

先看一下xml佈局:

<?xml version="1.0" encoding="UTF-8"?>
<TabHost xmlns:android="http://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 implements
		OnCheckedChangeListener {
	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);
	}

	@Override
	public 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);
	}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章