• 【IMOOC学习笔记】多种多样的App主界面Tab实现方法(二)


    Fragment实现Tab

    首先把activity_main.xml 文件中的ViewPager标签改成Fragment标签

    1     <FrameLayout
    2         android:id="@+id/id_content"
    3         android:layout_width="fill_parent"
    4         android:layout_height="0dp"
    5         android:layout_weight="1" >
    6     </FrameLayout>
    View Code

    其他的xml文件都跟上一篇中一样,就不重复了。

    与之前的ViewPager不同的是,我们还要为每个tab新建一个相应的Fragment类,并且在Fragment类中填充视图

    如下:

    package com.imooc.tab02;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class WeixinFragment extends Fragment
    {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState)
        {
            return inflater.inflate(R.layout.tab01, container, false);
        }
    }
    View Code

    最后看看MainActivity类

    package com.imooc.tab02;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentTransaction;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.Window;
    import android.widget.ImageButton;
    import android.widget.LinearLayout;
    
    public class MainActivity extends FragmentActivity implements OnClickListener {
        private LinearLayout mTabWeixin;
        private LinearLayout mTabFrd;
        private LinearLayout mTabAddress;
        private LinearLayout mTabSettings;
    
        private ImageButton mImgWeixin;
        private ImageButton mImgFrd;
        private ImageButton mImgAddress;
        private ImageButton mImgSettings;
    
        private Fragment mTab01;
        private Fragment mTab02;
        private Fragment mTab03;
        private Fragment mTab04;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main);
            initView();
            initEvent();
            setSelect(0);
        }
    
        private void initEvent() {
            mTabWeixin.setOnClickListener(this);
            mTabFrd.setOnClickListener(this);
            mTabAddress.setOnClickListener(this);
            mTabSettings.setOnClickListener(this);
        }
    
        private void initView() {
            mTabWeixin = (LinearLayout) findViewById(R.id.id_tab_weixin);
            mTabFrd = (LinearLayout) findViewById(R.id.id_tab_frd);
            mTabAddress = (LinearLayout) findViewById(R.id.id_tab_address);
            mTabSettings = (LinearLayout) findViewById(R.id.id_tab_settings);
    
            mImgWeixin = (ImageButton) findViewById(R.id.id_tab_weixin_img);
            mImgFrd = (ImageButton) findViewById(R.id.id_tab_frd_img);
            mImgAddress = (ImageButton) findViewById(R.id.id_tab_address_img);
            mImgSettings = (ImageButton) findViewById(R.id.id_tab_settings_img);
        }
    
        private void setSelect(int i) {
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction transaction = fm.beginTransaction();
            hideFragment(transaction);
            switch (i) {
            case 0:
                if (mTab01 == null) {
                    mTab01 = new WeixinFragment();
                    transaction.add(R.id.id_content, mTab01);
                } else {
                    transaction.show(mTab01);
                }
                mImgWeixin.setImageResource(R.drawable.tab_weixin_pressed);
                break;
            case 1:
                if (mTab02 == null) {
                    mTab02 = new FrdFragment();
                    transaction.add(R.id.id_content, mTab02);
                } else {
                    transaction.show(mTab02);
    
                }
                mImgFrd.setImageResource(R.drawable.tab_find_frd_pressed);
                break;
            case 2:
                if (mTab03 == null) {
                    mTab03 = new AddressFragment();
                    transaction.add(R.id.id_content, mTab03);
                } else {
                    transaction.show(mTab03);
                }
                mImgAddress.setImageResource(R.drawable.tab_address_pressed);
                break;
            case 3:
                if (mTab04 == null) {
                    mTab04 = new SettingFragment();
                    transaction.add(R.id.id_content, mTab04);
                } else {
                    transaction.show(mTab04);
                }
                mImgSettings.setImageResource(R.drawable.tab_settings_pressed);
                break;
    
            default:
                break;
            }
    
            transaction.commit();
        }
    
        private void hideFragment(FragmentTransaction transaction) {
            if (mTab01 != null) {
                transaction.hide(mTab01);
            }
            if (mTab02 != null) {
                transaction.hide(mTab02);
            }
            if (mTab03 != null) {
                transaction.hide(mTab03);
            }
            if (mTab04 != null) {
                transaction.hide(mTab04);
            }
        }
    
        @Override
        public void onClick(View v) {
            resetImgs();
            switch (v.getId()) {
            case R.id.id_tab_weixin:
                setSelect(0);
                break;
            case R.id.id_tab_frd:
                setSelect(1);
                break;
            case R.id.id_tab_address:
                setSelect(2);
                break;
            case R.id.id_tab_settings:
                setSelect(3);
                break;
    
            default:
                break;
            }
        }
    
        private void resetImgs() {
            mImgWeixin.setImageResource(R.drawable.tab_weixin_normal);
            mImgFrd.setImageResource(R.drawable.tab_find_frd_normal);
            mImgAddress.setImageResource(R.drawable.tab_address_normal);
            mImgSettings.setImageResource(R.drawable.tab_settings_normal);
        }
    
    }
    View Code
  • 相关阅读:
    Delphi中字符串默认以#开头。 dotNET界面
    生成飞库jar手机电子小说ByC# dotNET界面
    CS0016: Could not write to output file 'c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/ '拒绝访问' dotNET界面
    SVN备份和还原操作特指Window下使用Visual SVN dotNET界面
    生成飞库jar手机电子小说ByC#[2] dotNET界面
    写了个类似按键精灵的找图类。方便大家做UI测试的时候可以用 dotNET界面
    各种中间件
    聊聊位运算吧
    聊聊设计模式
    腾讯云容器服务(TKE集群)新版本config取不到token问题
  • 原文地址:https://www.cnblogs.com/six-moon/p/4644573.html
Copyright © 2020-2023  润新知