实现ViewPager+Fragment+头部标签(HorizontalScrollView)

                                       使用方法

1:在mainactivity布局文件中

<HorizontalScrollView
    android:id="@+id/HSV"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:background="#fcc"
    android:scrollbars="none"
    >
    <LinearLayout
        android:id="@+id/llTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_gravity="center_vertical"></LinearLayout>
</HorizontalScrollView>

  <android.support.v4.view.ViewPager
      android:id="@+id/vp"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">

  </android.support.v4.view.ViewPager>

2:在MAinActivity中
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private HorizontalScrollView hsv;
    private LinearLayout llTItle;
    private ViewPager vp;
    //放置title的集合
    private List<String> titles;
    //放置fragment的集合
    private List<Fragment> fragments;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        initView();
        //初始化数据
        initDate();
        //添加titles
        addTitles();

     //ViewPager的适配器
    vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return fragments.get(position);
            }

            @Override
            public int getCount() {
                return fragments.size();
            }
        });
      //设置ViewPager的监听事件
    vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //点击变换颜色
                for (int i = 0; i < titles.size(); i++) {
                    TextView text = (TextView) llTItle.getChildAt(i);
                    if (i == position) {
                        text.setTextColor(Color.YELLOW);
                    } else {
                        text.setTextColor(Color.BLACK);
                    }
                }
                //设置联动
                int margins = 40 * position;
                int winths = 0;
                for (int j = 0; j < titles.size(); j++) {
                    TextView textview = (TextView) llTItle.getChildAt(j);
                    winths += textview.getWidth();
                }
                hsv.scrollTo(margins, winths);

            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });


    }

    private void addTitles() {
        //把模拟的数据添加到textview中
        for(int i = 0;i<titles.size();i++){
            TextView text = new TextView(this);
            text.setTextSize(20);
            //设置textview格式
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.
                    MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
            params.setMargins(20,8,20,8);
            text.setLayoutParams(params);
            text.setText(titles.get(i));
            //把textview中的数据添加到LinearLayout中
            llTItle.addView(text);


            //textview点击切换页面
            text.setId(1000+i);
            text.setOnClickListener(this);
            //设置默认颜色
            if(i==0){
                text.setTextColor(Color.YELLOW);
            }else{
                text.setTextColor(Color.BLACK);
            }


            BaseFragment fragment = new BaseFragment();
            fragments.add(fragment);

        }
    }

    private void initDate() {
        titles = new ArrayList<>();
        fragments = new ArrayList<>();
        titles.add("周一");
        titles.add("周二");
        titles.add("周三");
        titles.add("周四");
        titles.add("周五");
        titles.add("昨天");
        titles.add("今天");

    }

    private void initView() {
        hsv = (HorizontalScrollView) findViewById(R.id.HSV);
        llTItle = (LinearLayout) findViewById(R.id.llTitle);
        vp = (ViewPager) findViewById(R.id.vp);
    }

    @Override
    public void onClick(View v) {
        //点击切换页面时,通过id来确定,点第几个显示第几页
        int id = v.getId();
        int position = id-1000;
        vp.setCurrentItem(position);
        //点击变换颜色
        for (int i = 0;i<titles.size();i++){
            TextView text = (TextView) llTItle.getChildAt(i);
            if(i==position){
                text.setTextColor(Color.YELLOW);
            }else{
                text.setTextColor(Color.BLACK);
            }
        }

    }
}
3:在BaseFragment中
public class BaseFragment extends Fragment {
    private View view;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
         view = inflater.inflate(R.layout.basefragments,container,false);
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
            
          //xutils网络请求
         getDataFromServer();

 }
   public void getDataFromServer() {

             String url="http://zkread.com/htnewsroom/v2.0/tech/user-0/itemId-12?page=1&firstId=1345100";
             RequestParams params=new RequestParams();
             params.setUri(url);
             x.http().get(params, new Callback.CommonCallback<String>() {

                 @Override
                 public void onSuccess(String result) {

                     if (result !=null){

                         Gson gson=new Gson();
                         News bean = gson.fromJson(result, News.class);

                         List<News.DataBean> data = bean.getData();

                         lv = (ListView) getView().findViewById(R.id.lv);
                         MyListViewAdapter adapter=new MyListViewAdapter(data,getActivity());
                         lv.setAdapter(adapter);

                     }
                 }

                 @Override
                 public void onError(Throwable ex, boolean isOnCallback) {

                 }

                 @Override
                 public void onCancelled(CancelledException cex) {

                 }

                 @Override
                 public void onFinished() {

                 }
             });

         }

4:BaseApplication 
/**
 * 
 * 描述:xutils的基本帮助类(用xutils3时需要添加依赖)
 */
public class BaseApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);
        x.Ext.setDebug(BuildConfig.DEBUG);
    }
}
5:请求网络用的实体类自己写


 }





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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值