ViewPager + Fragment+radiogroup实现滑动标签页
2016-01-05 13:33
405 查看
效果图radiobutton的样式需要修改一下,等我研究过后更新代码。radiobutton效果参照这篇文章http://blog.csdn.net/tiramisu_ljh/article/details/50462072MainActivity.java
package com.example.demo.myapplication; import android.os.Bundle; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements RadioGroup.OnCheckedChangeListener, ViewPager.OnPageChangeListener { //UI Objects private TextView txt_topbar; private RadioGroup rg_tab_bar; private RadioButton rb_channel; private RadioButton rb_message; private RadioButton rb_better; private RadioButton rb_setting; private ViewPager vpager; private MyFragmentPagerAdapter mAdapter; //几个代表页面的常量 public static final int PAGE_ONE = 0; public static final int PAGE_TWO = 1; public static final int PAGE_THREE = 2; public static final int PAGE_FOUR = 3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);<pre name="code" class="java"><pre style="background-color:#ffffff;color:#000000;font-family:'Liberation Mono';font-size:10.5pt;"><span style="color:#010101;"></span><pre name="code" class="java">
bindViews(); rb_channel.setChecked(true);} private void bindViews() {
</pre><pre name="code" class="java"> rg_tab_bar = (RadioGroup) findViewById(R.id.rg_tab_bar); rb_channel = (RadioButton) findViewById(R.id.rb_channel); rb_message = (RadioButton) findViewById(R.id.rb_message); rb_better = (RadioButton) findViewById(R.id.rb_better); rb_setting = (RadioButton) findViewById(R.id.rb_setting); rg_tab_bar.setOnCheckedChangeListener(this); //构造适配器 List<Fragment> fragments=new ArrayList<Fragment>(); fragments.add(new MyFragment1()); fragments.add(new MyFragment2()); fragments.add(new MyFragment3()); fragments.add(new FragmentMine()); mAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(),fragments); //设定适配器 vpager = (ViewPager) findViewById(R.id.vpager); vpager.setAdapter(mAdapter); vpager.setCurrentItem(0); vpager.addOnPageChangeListener(this);} @Override public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.rb_channel: vpager.setCurrentItem(PAGE_ONE); break; case R.id.rb_message: vpager.setCurrentItem(PAGE_TWO); break; case R.id.rb_better: vpager.setCurrentItem(PAGE_THREE);break; case R.id.rb_setting: vpager.setCurrentItem(PAGE_FOUR); break; } } //重写ViewPager页面切换的处理方法 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Overridepublic void onPageScrollStateChanged(int state) { //state的状态有三个,0表示什么都没做,1正在滑动,2滑动完毕 if (state == 2) { switch (vpager.getCurrentItem()) { case PAGE_ONE: rb_channel.setChecked(true); break; case PAGE_TWO: rb_message.setChecked(true); break; case PAGE_THREE:rb_better.setChecked(true); break; case PAGE_FOUR: rb_setting.setChecked(true); break; } } }}MyFragment1.java
package com.example.demo.myapplication; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class MyFragment1 extends Fragment { public MyFragment1(){ } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fg_content, container, false); TextView content = (TextView) view.findViewById(R.id.content); content.setText("第一个Fragment"); return view; } }MyFragmentPagerAdapter.java
<pre name="code" class="java">package com.example.demo.myapplication.adapter;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.view.ViewGroup;import java.util.List;/*** Created by liyiche on 1/8/2016.*/public class MyFragmentPagerAdapter extends FragmentPagerAdapter {private List<Fragment> mFragments;public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragments) {super(fm);mFragments=fragments;}@Overridepublic Object instantiateItem(ViewGroup vg, int position) {return super.instantiateItem(vg, position);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {super.destroyItem(container, position, object);}@Overridepublic Fragment getItem(int position) {return mFragments.get(position);}@Overridepublic int getCount() {return mFragments.size();}}布局文件activity_main.xml
<RelativeLayout 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=".MainActivity"><RelativeLayoutandroid:id="@+id/ly_top_bar"android:layout_width="match_parent"android:layout_height="48dp"><TextViewandroid:id="@+id/txt_topbar"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_centerInParent="true"android:gravity="center"android:text="乐蜂网"android:textSize="18sp" /><Viewandroid:layout_width="match_parent"android:layout_height="2dp"android:background="#000000"android:layout_alignParentBottom="true" /></RelativeLayout><RadioGroupandroid:id="@+id/rg_tab_bar"android:layout_width="match_parent"android:layout_height="56dp"android:layout_alignParentBottom="true"android:orientation="horizontal"><RadioButtonandroid:layout_height="wrap_content"android:layout_width="0dp"android:layout_weight="1"android:id="@+id/rb_channel"android:text="特卖" /><RadioButtonandroid:layout_height="wrap_content"android:layout_width="0dp"android:layout_weight="1"android:id="@+id/rb_message"android:text="商城" /><RadioButtonandroid:layout_height="wrap_content"android:layout_width="0dp"android:layout_weight="1"android:id="@+id/rb_better"android:text="购物车" /><RadioButtonandroid:layout_height="wrap_content"android:layout_width="0dp"android:layout_weight="1"android:id="@+id/rb_setting"android:text="我的蜂巢" /></RadioGroup><Viewandroid:id="@+id/div_tab_bar"android:layout_width="match_parent"android:layout_height="2px"android:layout_above="@id/rg_tab_bar"android:background="@color/colorPrimary" /><android.support.v4.view.ViewPagerandroid:id="@+id/vpager"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_above="@id/div_tab_bar"android:layout_below="@id/ly_top_bar" /></RelativeLayout>fg_content.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#FFFFFF"android:orientation="vertical"><TextViewandroid:id="@+id/content"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="呵呵"android:textSize="20sp" /></LinearLayout>
相关文章推荐
- Servies
- tail -f 多次grep过滤输出
- vmware虚拟机安装MAC OSX10.10Yosemite简要记录
- iOS中属性与成员变量的区别
- spring mvc + Jquery Data Table使用记录
- org.apache.http不存在解决办法
- 使用impdp将源库下的部分数据 导入 到目标库中
- 项目管理心得:一个项目经理的个人体会、经验总结
- 京东的商品列表页面侧滑菜单的分析
- Android Studio 提示"Error running app: No Android facet found for app"
- [Android算法] 解决ListView里嵌套CheckBox出现的数据刷新问题
- 《大数据时代:生活、工作与思维的大变革》读书笔记
- 工具_好(zhuang)用(bi)的chrome插件
- erlang日记
- Android中使用Handler造成内存泄露的分析和解决
- LeetCode - Reverse Linked List II
- 新手学习memcached【win7】(一) 安装和启动/停止
- Java Client/Server 上传文件到服务器与保存文件到本地
- JDBC(与Oracle的连接)
- 敏捷软件测试