ViewPager与Fragment联动实现界面切换‘’

来源:互联网 发布:易语言取网页框架源码 编辑:程序博客网 时间:2024/06/06 14:07

//(底部按钮以radiogroup为例)实现思路:一,布局:上边为ViewPager,下边为radiogroup (根据需求设置若干RadioButton,隐藏圆点,可以设置selector用于点击区分)


<?xml version="1.0" encoding="utf-8"?><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">    <android.support.v4.view.ViewPager        android:id="@+id/view_pager"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_above="@+id/re_group">    </android.support.v4.view.ViewPager>    <RadioGroup        android:id="@+id/re_group"        android:layout_alignParentBottom="true"        android:layout_width="match_parent"        android:layout_height="20dp"        android:orientation="horizontal">        <RadioButton            android:checked="true"            android:background="@drawable/colors"            android:button="@null"            android:id="@+id/xw_bt"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="新闻"/>        <RadioButton            android:background="@drawable/colors"            android:button="@null"            android:id="@+id/js_bt"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="军事"/>        <RadioButton            android:background="@drawable/colors"            android:button="@null"            android:id="@+id/yx_bt"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="游戏"/>        <RadioButton            android:background="@drawable/colors"            android:button="@null"            android:id="@+id/yl_bt"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:text="娱乐"/>    </RadioGroup></RelativeLayout>//selector选择器设置(点击背景颜色转换)
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_checked="true" android:drawable="@color/yes"/>    <item android:state_checked="false" android:drawable="@color/no"/></selector>

//二,创建Fragment,对应替换需要的布局(举一例)
//1,fragment布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="军事栏目"/></LinearLayout>//2,fragment类替换布局
public class Fragment_junshi extends Fragment{    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.junshi_fragment_layout,container,false);        return view;    }




//三, 3大步骤:1初始化控件,2创建集合添加数据,3设置适配器
public class MainActivity extends FragmentActivity {    private RadioGroup re_group;    ViewPagerAdapter adapter;    private ViewPager view_pager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_my);        //找到控件        view_pager = (ViewPager) findViewById(R.id.view_pager);        re_group = (RadioGroup) findViewById(R.id.re_group);        //数据       List<Fragment>   list = new ArrayList<>();        list.add(new Fragment_xinwen());        list.add(new Fragment_junshi());        list.add(new Fragment_youxi());        list.add(new Fragment_yule());        //设置适配器        adapter = new ViewPagerAdapter(getSupportFragmentManager(),list);        view_pager.setAdapter(adapter);        //滑动监听        view_pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                //滑动对应选中按钮                re_group.check(re_group.getChildAt(position).getId());            }            @Override            public void onPageScrollStateChanged(int state) {            }        });        //点击监听        re_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup radioGroup, int i) {                //点击按钮对应选中相应的轮播图                switch (i) {                    case R.id.xw_bt:                        view_pager.setCurrentItem(0, false);//可以实现不滑动的效果                        break;                    case R.id.js_bt:                        view_pager.setCurrentItem(1, false);//可以实现不滑动的效果                        break;                    case R.id.yx_bt:                        view_pager.setCurrentItem(2, false);//可以实现不滑动的效果                        break;                    case R.id.yl_bt:                        view_pager.setCurrentItem(3, false);//可以实现不滑动的效果                        break;                    default:                        break;                }            }        });    }}







 

阅读全文
0 0
原创粉丝点击