您的位置:首页 > 其它

使用 RadioGroup和viewPager实现可滑动的tab

2015-07-29 17:34 351 查看
使用 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>

ae69
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息