• TabHost、RadioGroup实现底部菜单导航


    先上效果图:

    实现上述效果,我们按照以下几个步骤逐一的实现

    1.定义TabHost的布局,TabHost布局 android 有一定的规定:

    一般包含id为@android:id/tabhost的Tabhost,id为@android:id/tabs的TabWidget,id为@android:id/tabcontent的FrameLayout

    这里结合RadioGroup实现点击切换Activity,RadioButton可以方便设置图片和文字的上下左右位置。

    以下为布局文件:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    <TabHost android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <RelativeLayout android:layout_height="match_parent"
            android:layout_width="match_parent">
        <TabWidget android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:visibility="gone">
        </TabWidget>
        <FrameLayout android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
          >
            <RadioGroup android:id="@+id/main_radiogroup"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_gravity="bottom"
                android:gravity="bottom"
                android:background="@drawable/bottom1">
                <RadioButton android:id="@+id/workspace" android:checked="true" style="@style/TabButton" android:text="工作区" android:layout_weight="1" android:drawableTop="@drawable/bg_radio_icon_menu_0"/>
                <RadioButton android:id="@+id/entertainment" style="@style/TabButton" android:text="娱乐生活" android:layout_weight="1" android:drawableTop="@drawable/bg_radio_icon_menu_1"/>
                <RadioButton android:id="@+id/tools"  style="@style/TabButton" android:text="工具箱" android:layout_weight="1" android:drawableTop="@drawable/bg_radio_icon_menu_2"/>
                <RadioButton android:id="@+id/setting"  style="@style/TabButton" android:text="个人中心" android:layout_weight="1" android:drawableTop="@drawable/bg_radio_icon_menu_3"/>
        </RadioGroup>
        </FrameLayout>
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentTop="true"
            android:layout_above="@android:id/tabs">
        </FrameLayout>
        </RelativeLayout>
    </TabHost>
    </RelativeLayout>

    2.编写Activity

    Activity需实现TabActivity,初始化Tab 设置RadioButton的选择监听事件用于切换Activity

    代码如下:

    import com.nisco.twp.R;
    import android.app.Activity;
    import android.app.ActivityGroup;
    import android.app.TabActivity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.widget.RadioGroup;
    import android.widget.RadioGroup.OnCheckedChangeListener;
    import android.widget.TabHost;
    
    public class MainTabHost extends TabActivity
    {
        private TabHost tabHost=null;
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_tabhost);
            tabHost=(TabHost)findViewById(android.R.id.tabhost);
            tabHost.setFocusable(true);
            TabHost.TabSpec tabSpec=tabHost.newTabSpec("1");
            Intent intent=new Intent(this, MainActivity.class);
            tabSpec.setIndicator("工作区").setContent(intent);
            tabHost.setup(this.getLocalActivityManager());
            tabHost.addTab(tabSpec);
            
            TabHost.TabSpec tabSpec2=tabHost.newTabSpec("2");
            Intent intent2=new Intent(this, EntertainmentMainActivity.class);
            tabSpec2.setIndicator("娱乐生活").setContent(intent2);
            tabHost.addTab(tabSpec2);
            
            TabHost.TabSpec tabSpec3=tabHost.newTabSpec("3");
            Intent intent3=new Intent(this, ToolsMainActivity.class);
            tabSpec3.setIndicator("工具箱").setContent(intent3);
            tabHost.addTab(tabSpec3);
            
            TabHost.TabSpec tabSpec4=tabHost.newTabSpec("4");
            Intent intent4=new Intent(this, MainActivity.class);
            tabSpec4.setIndicator("个人中心").setContent(intent4);
            tabHost.addTab(tabSpec4);
            tabHost.setCurrentTab(0);
            RadioGroup radioGroup=(RadioGroup)findViewById(R.id.main_radiogroup);
            radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
                
                @Override
                public void onCheckedChanged(RadioGroup group, int checkedId)
                {
                    switch (checkedId) {
                    case R.id.workspace:
                        tabHost.setCurrentTab(0);
                        break;
                    case R.id.entertainment:
                        tabHost.setCurrentTab(1);
                        break;
                    case R.id.tools:
                        tabHost.setCurrentTab(2);
                        break;
                    case R.id.setting:
                        tabHost.setCurrentTab(3);
                        break;
    
                    }
                }
            });
        }
        
    }

    Tab切换对应的几个Activity都相对简单,这里就不再赘述了。

  • 相关阅读:
    Android中得到布局文件对象有三种方式
    android中的键值对
    .length()与.length与.size()
    异常处理
    Python操作Excel
    写一个简单的爬虫(博客)
    开发一个登录接口(Mysql)
    常用模块
    内置函数
    装饰器
  • 原文地址:https://www.cnblogs.com/a354823200/p/3921893.html
Copyright © 2020-2023  润新知