RadioGroup + ViewPager + Fragment 实现滑动展示界面

主布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="match_parent"
        android:layout_height="120px"
        android:layout_below="@+id/mainHead"
        android:orientation="horizontal"></RadioGroup>

    <View
        android:id="@+id/vView"
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:layout_alignBottom="@+id/radioGroup"
        android:background="#e29c9999"></View>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/vView">

        <android.support.v4.view.ViewPager
            android:id="@+id/vpContent"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="10dp"></android.support.v4.view.ViewPager>
    </RelativeLayout>
</RelativeLayout>

主java代码

public class BijiFragment extends BaseFragment {
    //创建radiobutton相关
    private RadioGroup radioGroup;
    private RadioButton[] radioButtons;
    private List<String> radioButtonDatas;
    // viewpager 相关
    private ViewPager vpContent;
    private List<Fragment> fragments;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_biji_layout, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        radioGroup = (RadioGroup) mActivity.findViewById(R.id.radioGroup);
        vpContent = (ViewPager) mActivity.findViewById(R.id.vpContent);
        initRadioButton();
        initVpContent();
    }

    //动态创建RadioButton
    private void initRadioButton() {
        radioButtonDatas = new ArrayList<>();
        radioButtonDatas.add("美妆");
        radioButtonDatas.add("精选");
        radioButtonDatas.add("杂志");
        radioButtons = new RadioButton[radioButtonDatas.size()];
        //创建RadioButton
        for (int i = 0; i < radioButtonDatas.size(); i++) {
            RadioButton radioButton = new RadioButton(mActivity);
            Bitmap bm = null;
            radioButton.setButtonDrawable(new BitmapDrawable(bm));//去除圆圈
            radioButton.setBackgroundResource(R.drawable.main_radiobutton_select);
            radioButton.setText(radioButtonDatas.get(i));
            radioButton.setGravity(Gravity.CENTER);
            int screenWidth = getResources().getDisplayMetrics().widthPixels;
            int eachWidth = screenWidth / radioButtonDatas.size();
            RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(eachWidth, RadioGroup.LayoutParams.MATCH_PARENT);
            radioButton.setLayoutParams(params);
            radioGroup.addView(radioButton);
            radioButtons[i] = radioButton;
        }
        radioButtons[0].setChecked(true);
        // radioGroup的点击事件
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int checkId) {
                for (int i = 0; i < radioGroup.getChildCount(); i++) {
                    if (radioButtons[i].getId() == checkId) {
                        vpContent.setCurrentItem(i);
                    }
                }
            }
        });
    }

    //viewpager
    private void initVpContent() {
        fragments = new ArrayList<>();
        fragments.add(new FragmentOne());
        fragments.add(new FragmentTwo());
        fragments.add(new FragmentThree());
        vpContent.setAdapter((new VpContentAdapter(mActivity.getSupportFragmentManager(), fragments)));
        vpContent.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {

                radioButtons[position].setChecked(true);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

}

radioButton的Drawable

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" >
        <layer-list>
            <item android:top="38dp">
                <shape>
                    <solid android:color="#efda3362"></solid>
                </shape>
            </item>
        </layer-list>
    </item>
    <item android:state_checked="false" android:drawable="@color/transparent"></item>
</selector>

其次就是fragment的代码

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_one,container,false);
    oneListView = (ListView) view.findViewById(R.id.oneListView);
    return view;
}

...微笑


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值