zoukankan      html  css  js  c++  java
  • 仿照微信的界面,即ViewPager+Fragment的结合使用

    主布局文件:

    android:drawableTop="@drawable/weixin_bg"用的是状态选择器,所以要写4个状态选择器,图片的
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <android.support.v4.view.ViewPager
            android:id="@+id/vp"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </android.support.v4.view.ViewPager>
    
        <RadioGroup
            android:id="@+id/rg"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:orientation="horizontal" >
    
            <!-- android:button="@null"    表示去掉RadioButton中的圈圈 -->
    
            <RadioButton
                android:id="@+id/rb_weixin"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:drawableTop="@drawable/weixin_bg"
                android:gravity="center_vertical"
                android:text="微信"
                android:textSize="16sp" />
    
            <RadioButton
                android:id="@+id/rb_contact"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:drawableTop="@drawable/contact_bg"
                android:gravity="center_vertical"
                android:text="通讯"
                android:textSize="16sp" />
    
            <RadioButton
                android:id="@+id/rb_found"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:drawableTop="@drawable/found_bg"
                android:gravity="center_vertical"
                android:text="发现"
                android:textSize="16sp" />
    
            <RadioButton
                android:id="@+id/rb_me"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:button="@null"
                android:drawableTop="@drawable/me_bg"
                android:gravity="center_vertical"
                android:text="我"
                android:textSize="16sp" />
        </RadioGroup>
    
    </RelativeLayout>

    MainActivity代码:

    public class MainActivity extends FragmentActivity implements OnCheckedChangeListener, OnPageChangeListener {
        private static final int WEIXIN = 0;
        private static final int CONTACT = 1;
        private static final int FOUND= 2;
        private static final int ME= 3;
        private ViewPager vp;
        /**RadioGroup*/
        private RadioGroup rg;
        //四个RadioButton
        private RadioButton rb_weixin;
        private RadioButton rb_contact;
        private RadioButton rb_found;
        private RadioButton rb_me;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            vp = (ViewPager) findViewById(R.id.vp);
            rg = (RadioGroup) findViewById(R.id.rg);
            rg.setOnCheckedChangeListener(this);
            vp.setAdapter(new MainAdapter(getSupportFragmentManager()));
            
            vp.setOnPageChangeListener(this);
            
            rb_weixin = (RadioButton) findViewById(R.id.rb_weixin);
            rb_contact = (RadioButton) findViewById(R.id.rb_contact);
            rb_found = (RadioButton) findViewById(R.id.rb_found);
            rb_me = (RadioButton) findViewById(R.id.rb_me);
            
            //一进入程序就让微信RadioButton显示为被点击状态
            rb_weixin.setChecked(true);
            
        }
        class MainAdapter extends FragmentPagerAdapter{
            List<Fragment> list=new ArrayList<Fragment>();
            private WeixinFragment weixinFragment;
            private ContactFragment contactFragment;
            private FoundFragment foundFragment;
            private MeFragment meFragment;
            
            public MainAdapter(FragmentManager fm) {
                super(fm);
                weixinFragment = new WeixinFragment();
                contactFragment = new ContactFragment();
                foundFragment = new FoundFragment();
                meFragment = new MeFragment();
                list.add(weixinFragment);
                list.add(contactFragment);
                list.add(foundFragment);
                list.add(meFragment);
                
            }
    
            @Override
            public Fragment getItem(int position) {
                Fragment fragment = list.get(position);
                return fragment;
            }
    
            @Override
            public int getCount() {
                return list.size();
            }
            
        }
        //RadioButton被点击时
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            switch (checkedId) {
            case R.id.rb_weixin:
                vp.setCurrentItem(WEIXIN);
                break;
            case R.id.rb_contact:
                vp.setCurrentItem(CONTACT);
                break;
            case R.id.rb_found:
                vp.setCurrentItem(FOUND);
                break;
            case R.id.rb_me:
                vp.setCurrentItem(ME);
                break;
    
            default:
                break;
            }
        }
        
        //ViewPager滑动状态改变时
        @Override
        public void onPageScrollStateChanged(int arg0) {
            System.out.println("onPageScrollStateChanged");
        }
        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
            System.out.println("onPageScrolled");
        }
        //当ViewPager滑动停止时
        @Override
        public void onPageSelected(int position) {
            System.out.println("onPageSelected");
            
            switch (position) {
            case WEIXIN:
                rb_weixin.setChecked(true);
                break;
            case CONTACT:
                rb_contact.setChecked(true);
                break;
            case FOUND:
                rb_found.setChecked(true);
                break;
            case ME:
                rb_me.setChecked(true);
                break;
    
            default:
                break;
            }
        }
    }

    这是其中一个Fragment,其它三个一模一样:

    public class WeixinFragment extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View view = View.inflate(getActivity(), R.layout.fragment_home, null);
            return view;
        }
    }

    这样就完成了,这是结果图:

    不知道为什么,底部几张图片不能完整地显示,文字也不能居中显示,有没有高手指点一二?

  • 相关阅读:
    Codeforces 1291 Round #616 (Div. 2) B
    总结
    刷新DNS解析缓存+追踪+域名解析命令
    数学--数论--Hdu 5793 A Boring Question (打表+逆元)
    Lucene.net(4.8.0) 学习问题记录六:Lucene 的索引系统和搜索过程分析
    LeetCode 117 Populating Next Right Pointers in Each Node II
    LeetCode 116 Populating Next Right Pointers in Each Node
    test test
    LeetCode 115 Distinct Subsequences
    LeetCode 114. Flatten Binary Tree to Linked List
  • 原文地址:https://www.cnblogs.com/android-yus/p/4948068.html
Copyright © 2011-2022 走看看