//(底部按钮以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; } } }); } }