ViewPager+Fragment

来源:互联网 发布:加拿大进出口贸易数据 编辑:程序博客网 时间:2024/06/05 01:53

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <FrameLayout        android:id="@+id/frameLayout"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1"></FrameLayout>    <RadioGroup        android:id="@+id/radioGroup"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <RadioButton            android:id="@+id/radio01"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:button="@null"            android:drawableTop="@drawable/selector1"            android:gravity="center"            android:tag="0"            android:checked="true"            android:text="漫画"            android:textColor="@drawable/text_color"            android:textSize="20sp" />        <RadioButton            android:id="@+id/radio02"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:button="@null"            android:drawableTop="@drawable/selector2"            android:gravity="center"            android:tag="1"            android:text="发现"            android:textColor="@drawable/text_color"            android:textSize="20sp" />        <RadioButton            android:id="@+id/radio03"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:button="@null"            android:drawableTop="@drawable/selector3"            android:gravity="center"            android:tag="2"            android:text="社区"            android:textColor="@drawable/text_color"            android:textSize="20sp" />        <RadioButton            android:id="@+id/radio04"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:button="@null"            android:drawableTop="@drawable/selector4"            android:gravity="center"            android:tag="3"            android:text="我的"            android:textColor="@drawable/text_color"            android:textSize="20sp" />    </RadioGroup></LinearLayout>
---------------------------------------------------------------------------------------------------------------------------------

package com.example.e.viewpagerdemo;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.support.v7.app.AppCompatActivity;import android.widget.RadioButton;import android.widget.RadioGroup;import java.util.ArrayList;import java.util.List;import fragment.Fragment1_ShouYe;import fragment.Fragment2_ShiPing;import fragment.Fragment3_TouTiao;import fragment.Fragment4_WoDe;public class MainActivity extends AppCompatActivity {    private RadioGroup rg;    private List<Fragment> list;    private Fragment1_ShouYe fragment1;    private Fragment2_ShiPing fragment2;    private Fragment3_TouTiao fragment3;    private Fragment4_WoDe fragment4;    private FragmentManager fm;    @Override    protected void onCreate(Bundle savedInstanceState) {        getSupportActionBar().hide();        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        rg = (RadioGroup) findViewById(R.id.radioGroup);        list = new ArrayList<>();        fm = getSupportFragmentManager();        fragment1 = new Fragment1_ShouYe();        fragment2 = new Fragment2_ShiPing();        fragment3 = new Fragment3_TouTiao();        fragment4 = new Fragment4_WoDe();        list.add(fragment1);        list.add(fragment2);        list.add(fragment3);        list.add(fragment4);        FragmentTransaction transaction = fm.beginTransaction();        transaction.add(R.id.frameLayout, list.get(0));        transaction.add(R.id.frameLayout, list.get(1));        transaction.add(R.id.frameLayout, list.get(2));        transaction.add(R.id.frameLayout, list.get(3));        transaction.show(list.get(0)).hide(list.get(1)).hide(list.get(2)).hide(list.get(3));        transaction.commit();        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup group, int checkedId) {                RadioButton rb = (RadioButton) group.findViewById(checkedId);                int tag = Integer.parseInt(rb.getTag().toString());                FragmentTransaction transaction1 = fm.beginTransaction();                for (int i = 0; i < list.size(); i++) {                    if (tag == i) {                        transaction1.show(list.get(i));                    } else {                        transaction1.hide(list.get(i));                    }                }                transaction1.commit();            }        });    }}
--------------------------------------------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/activity_main"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <RadioGroup        android:id="@+id/radioGroup"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal">        <RadioButton            android:id="@+id/radio01"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:button="@null"            android:checked="true"            android:gravity="center"            android:padding="5dp"            android:text="周三"            android:textColor="@drawable/text_color"            android:textSize="15sp" />        <RadioButton            android:id="@+id/radio02"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:button="@null"            android:gravity="center"            android:padding="5dp"            android:text="周四"            android:textColor="@drawable/text_color"            android:textSize="15sp" />        <RadioButton            android:id="@+id/radio03"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:button="@null"            android:gravity="center"            android:padding="5dp"            android:text="周五"            android:textColor="@drawable/text_color"            android:textSize="15sp" />        <RadioButton            android:id="@+id/radio04"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:button="@null"            android:gravity="center"            android:padding="5dp"            android:text="周六"            android:textColor="@drawable/text_color"            android:textSize="15sp" />        <RadioButton            android:id="@+id/radio05"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:button="@null"            android:gravity="center"            android:padding="5dp"            android:text="昨天"            android:textColor="@drawable/text_color"            android:textSize="15sp" />        <RadioButton            android:id="@+id/radio06"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:button="@null"            android:gravity="center"            android:padding="5dp"            android:text="今天"            android:textColor="@drawable/text_color"            android:textSize="15sp" />    </RadioGroup>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="2dp"        android:orientation="horizontal"        android:weightSum="6">        <View            android:id="@+id/view"            android:layout_width="0dp"            android:layout_height="match_parent"            android:layout_weight="1"            android:background="#FDE23D"></View>    </LinearLayout>    <android.support.v4.view.ViewPager        android:id="@+id/viewPager"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_marginTop="5dp"></android.support.v4.view.ViewPager></LinearLayout>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------

package com.example.e.viewpagerdemo;import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.RadioButton;import android.widget.RadioGroup;import java.util.Arrays;import java.util.List;import fragment.Fragment1;import fragment.Fragment2;import fragment.Fragment3;import fragment.Fragment4;import fragment.Fragment5;import fragment.Fragment6;public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener {    private ViewPager viewPager;    private RadioGroup radioGroup;    private View v;    private RadioButton radio01;    private RadioButton radio02;    private RadioButton radio03;    private RadioButton radio04;    private RadioButton radio05;    private RadioButton radio06;    private List<? extends Fragment> list;    private MyAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        getSupportActionBar().hide();        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        viewPager.setOffscreenPageLimit(6);        adapter = new MyAdapter(getSupportFragmentManager());        viewPager.setAdapter(adapter);        radioGroup.setOnCheckedChangeListener(this);        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                int width = v.getWidth();                if (positionOffsetPixels != 0) {                    v.setX(width * position + positionOffsetPixels / 6);                }            }            @Override            public void onPageSelected(int position) {//                if(radioGroup!=null && radioGroup.getChildCount()>position){//                    ((RadioButton)radioGroup.getChildAt(position)).performClick();//                }                radioGroup.check(radioGroup.getChildAt(position).getId());            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    private void initView() {        viewPager = (ViewPager) findViewById(R.id.viewPager);        radioGroup = (RadioGroup) findViewById(R.id.radioGroup);        v = findViewById(R.id.view);        radio01 = (RadioButton) findViewById(R.id.radio01);        radio02 = (RadioButton) findViewById(R.id.radio02);        radio03 = (RadioButton) findViewById(R.id.radio03);        radio04 = (RadioButton) findViewById(R.id.radio04);        radio05 = (RadioButton) findViewById(R.id.radio05);        radio06 = (RadioButton) findViewById(R.id.radio06);        list = Arrays.asList(new Fragment1(), new Fragment2(), new Fragment3(), new Fragment4(), new Fragment5(), new Fragment6());    }    @Override    public void onCheckedChanged(RadioGroup group, int checkedId) {       
int position=0;switch (checkedId) {    case R.id.radio01:        position=0;        break;    case R.id.radio02:        position=1;        break;    case R.id.radio03:        position=2;        break;    case R.id.radio04:        position=3;        break;    case R.id.radio05:        position=4;        break;    case R.id.radio06:        position=5;        break;}if (viewPager.getCurrentItem()!=position){    viewPager.setCurrentItem(position);}
} class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return list.get(position); } @Override public int getCount() { return list.size(); } }}