使用 RadioGroup和viewPager实现可滑动的tab,使用FragmentListAdapter,不用自定义viewPagerAdapter:
private List<Fragment> list;
private ViewPager viewPager;
private FragmentListAdapter adater;
RadioGroup rg_main_btHead;
viewPager = (ViewPager) findViewById(R.id.viewPager);
rg_main_btHead = (RadioGroup) findViewById(R.id.rg_main_btHead);
initList();
viewPager.setAdapter(adater);
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
RadioButton rBtn = (RadioButton) rg_main_btHead
.getChildAt(arg0);
rBtn.setChecked(true);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
rg_main_btHead
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId == R.id.rb_customer_info) {
viewPager.setCurrentItem(0);
} else {
viewPager.setCurrentItem(1);
}
}
});
// 为了实现添加用户操作后跳转到相应的页
viewPager.setCurrentItem(if_broker);
}
public void initList() {
list = new ArrayList<Fragment>();
list.add(new CustomerFragment());
list.add(new BrokerFragment());
adater = new FragmentListAdapter(getSupportFragmentManager(), list);
}
用到的xml文件:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white"
android:orientation="vertical" >
<RadioGroup
android:id="@+id/rg_main_btHead"
android:layout_width="match_parent"
android:layout_height="@dimen/button_mid"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/rb_customer_info"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/main_head_list"
android:button="@null"
android:checked="true"
android:gravity="center"
android:text="@string/customer_info"
android:textColor="@drawable/main_head_color_list" />
<RadioButton
android:id="@+id/rb_broker_info"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:layout_weight="1"
android:background="@drawable/main_head_list"
android:button="@null"
android:checked="false"
android:gravity="center"
android:text="@string/broker_info"
android:textColor="@drawable/main_head_color_list" />
</RadioGroup>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
</android.support.v4.view.ViewPager>
</LinearLayout>
tab被选中时的下划线及字体颜色变换:
main_head_list.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/buttonbg" android:state_checked="true"/>
</selector>
main_head_color_list.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/app_bg"></item>
<item android:state_checked="false" android:color="@color/gray_text"></item>
</selector>