模擬Android微信APK底部的TabHost選項卡

jopen 11年前發布 | 68K 次閱讀 Android Android開發 移動開發

資源準備

下載一個微信apk,解壓,并找出所需的資源圖片。
20130920001352859.jpeg

layout中XML布局
    <?xml version="1.0" encoding="UTF-8"?>  
    <!-- Tab導航 最新版 -->  
    <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" >  

        <RelativeLayout  
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content"  
            android:orientation="vertical">  

            <FrameLayout  
                android:id="@android:id/tabcontent"  
                android:layout_width="fill_parent"  
                android:layout_height="fill_parent"  
                android:background="#FFF" >  

            </FrameLayout>  

            <!-- TabWidget管理所有的選項卡,id名是android指定的 -->  
            <TabWidget  
                android:id="@android:id/tabs"  
                android:layout_width="fill_parent"  
                android:layout_height="fill_parent"  
                android:visibility="gone" />  

            <!-- Frame下放置單選群組替代TAB效果 -->  
            <RadioGroup  
                android:id="@+id/main_radio"  
                android:layout_width="fill_parent"  
                android:layout_height="wrap_content"  
                android:background="#ccc"  
                android:gravity="center_vertical"  
                android:orientation="horizontal"  
                android:layout_alignParentBottom="true" >  

                <RadioButton  
                    android:id="@+id/tab_icon_weixin"  
                    style="@style/main_tab_bottom"  
                    android:checked="true"  
                    android:drawableTop="@drawable/tab_weixin_normal"  
                    android:text="微信" />  

                <RadioButton  
                    android:id="@+id/tab_icon_address"  
                    style="@style/main_tab_bottom"  
                    android:checked="false"  
                    android:drawableTop="@drawable/tab_address_normal"  
                    android:text="通訊錄" />  

                <RadioButton  
                    android:id="@+id/tab_icon_find"  
                    style="@style/main_tab_bottom"  
                    android:drawableTop="@drawable/tab_find_frd_normal"  
                    android:text="發現" />  

                <RadioButton  
                    android:id="@+id/tab_icon_myself"  
                    style="@style/main_tab_bottom"  
                    android:drawableTop="@drawable/tab_settings_normal"  
                    android:text="我" />  
            </RadioGroup>  
        </RelativeLayout>  
    </TabHost>  

style中XML文檔
     <!-- MainTab選項卡中單選按鈕的樣式,其中包括了文本、selector、padding、寬高、權重等的設置 -->  
     <style name="main_tab_bottom">  
         <item name="android:textSize">13sp</item>  
         <item name="android:textColor">#666666</item>  
         <item name="android:gravity">center_horizontal</item>  
    <!-- 該處引用drawable下面的一個xml文檔(selector) -->  
         <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>  
     </style>  

Activity中Java文件
    package com.app;  

    import android.app.AlertDialog;  
    import android.app.TabActivity;  
    import android.content.DialogInterface;  
    import android.content.Intent;  
    import android.os.Bundle;  
    import android.view.KeyEvent;  
    import android.view.View;  
    import android.widget.RadioButton;  
    import android.widget.RadioGroup;  
    import android.widget.TabHost;  
    import android.widget.TextView;  
    import android.widget.Toast;  
    import android.widget.TabWidget;  

    /** 
     * Tab導航 
     */  
    //public class Tabs extends TabActivity implements View.OnClickListener{  
    public class Tabs extends TabActivity{  
        public static TabHost mTabHost;  
        public static TabHost getmTabHost() {  
            return mTabHost;  
        }  

        private RadioGroup main_radio;  
        private RadioButton tab_icon_weixin, tab_icon_address, tab_icon_find,tab_icon_myself;  

        /** Called when the activity is first created. */  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.tabs);  
            mTabHost = getTabHost();  
            final TabWidget tabWidget = mTabHost.getTabWidget();  
            tabWidget.setStripEnabled(false);// 圓角邊線不啟用  
            //添加n個tab選項卡,定義他們的tab名,指示名,目標屏對應的類  
            mTabHost.addTab(mTabHost.newTabSpec("TAG1").setIndicator("0").setContent(new Intent(this, WeixinActivity.class)));  
            mTabHost.addTab(mTabHost.newTabSpec("TAG2").setIndicator("1").setContent(new Intent(this, AddressActivity.class)));  
            mTabHost.addTab(mTabHost.newTabSpec("TAG3").setIndicator("2").setContent(new Intent(this, FindActivity.class)));  
            mTabHost.addTab(mTabHost.newTabSpec("TAG4").setIndicator("3").setContent(new Intent(this, MyselfActivity.class)));  
            // 視覺上,用單選按鈕替代TabWidget  
            main_radio = (RadioGroup) findViewById(R.id.main_radio);  
            tab_icon_weixin = (RadioButton) findViewById(R.id.tab_icon_weixin);  
            tab_icon_address = (RadioButton) findViewById(R.id.tab_icon_address);  
            tab_icon_find = (RadioButton) findViewById(R.id.tab_icon_find);  
            tab_icon_myself = (RadioButton) findViewById(R.id.tab_icon_myself);  
            main_radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {  
                        @Override  
                        public void onCheckedChanged(RadioGroup group, int id) {  
                            if (id == tab_icon_weixin.getId()) {  
                                mTabHost.setCurrentTab(0);  
                            } else if (id == tab_icon_address.getId()) {  
                                mTabHost.setCurrentTab(1);  
                            } else if (id == tab_icon_find.getId()) {  
                                mTabHost.setCurrentTab(2);  
                            } else if (id == tab_icon_myself.getId()) {  
                                mTabHost.setCurrentTab(3);  
                            }  
                        }  
                    });  

            // 設置當前顯示哪一個標簽  
            mTabHost.setCurrentTab(0);  
            // 遍歷tabWidget每個標簽,設置背景圖片 無  
            for (int i = 0; i < tabWidget.getChildCount(); i++) {  
                View vv = tabWidget.getChildAt(i);  
                vv.getLayoutParams().height = 45;  
                // vv.getLayoutParams().width = 65;  
                vv.setBackgroundDrawable(null);  
            }  
    //      findViewById(R.id.tab_icon_brand).setOnClickListener(this);  
        }  
    }  

效果圖

20130920001922656.jpeg

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!