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

来源:互联网 发布:上海华腾软件怎么样 编辑:程序博客网 时间:2024/05/01 05:11

主布局:

<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
原创粉丝点击