每个应用几乎都逃不开导航条,导航条的制作方法有很多
1、TabActivity+TabHost(已经过期)
2、Fragment + RadioGroup 【必要时首选】
3、Fragment + ViewPager + RadioGroup自定义固定导航条 【推荐使用】
4、Fragment + ViewPager 带滑动导航条 【推荐使用】
5、Fragment + ViewPager + HorizontalScrollView自定义滑动导航条 【推荐使用】
一般来说都需要用户能进行滑动,所以我们采取第三种方式进行导航条的制作。
先上图 看是不是你想要的效果
先看MainActivity的布局 采用的是RadioGroup+viewpager
xml文件奉上
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/activity_main"
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="c.navigationbar.MainActivity">
<RadioGroup
android:id="@+id/rb_layout"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<RadioButton
android:id="@+id/healthy_life"
style="@style/radio_button_style"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:checked="true"
android:gravity="center"
android:text="健康生活" />
<RadioButton
android:id="@+id/home"
style="@style/radio_button_style"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:button="@null"
android:gravity="center"
android:text="我的" />
</RadioGroup>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/rb_layout"></android.support.v4.view.ViewPager>
</RelativeLayout>
style
<style name="radio_button_style">
<item name="android:gravity">center</item>
<item name="android:layout_weight">1</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:button">@null</item>
<item name="android:textSize">20sp</item>
<item name="android:textColor">@drawable/text_color_selector</item>
</style>
drawable中的xml文件 text_color_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#f00" android:state_checked="true"></item>
<item android:color="#000"></item>
</selector>
然后处理逻辑
public class MainActivity extends AppCompatActivity{
private RadioGroup radioGroup;
private ViewPager viewPager;
@Override
protected void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<Fragment> list = new ArrayList<>();
list.add(new OneFragment());
list.add(new TwoFragment());
ViewpagerAdapter adapter = new ViewpagerAdapter(getSupportFragmentManager(), list);
viewPager = (ViewPager) findViewById(R.id.vp);
viewPager.setAdapter(adapter);
radioGroup = (RadioGroup) findViewById(R.id.rb_layout);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener(){
@Override
public void onPageScrolled (int position, float positionOffset, int positionOffsetPixels){
}
@Override
public void onPageSelected (int position){
((RadioButton) radioGroup.getChildAt(position)).setChecked(true);
}
@Override
public void onPageScrollStateChanged (int state){
}
});
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){
@Override
public void onCheckedChanged (RadioGroup group, int checkedId){
switch(checkedId){
case R.id.healthy_life:
viewPager.setCurrentItem(0);
break;
case R.id.home:
viewPager.setCurrentItem(1);
break;
}
}
});
}
}
其中也要一个ViewpagerAdapter
public class ViewpagerAdapter extends FragmentPagerAdapter{
private List<Fragment> list;
public ViewpagerAdapter (FragmentManager fm, List<Fragment> list) {
super(fm);
this.list = list;
}
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
}
结束!!!