动态加载HorizontalSrcollView与ViewPager关联使用

来源:互联网 发布:淘宝服装商标男装取名 编辑:程序博客网 时间:2024/05/16 19:41

      先在布局中定义

      <HorizontalScrollView
            android:id="@+id/hsv"
            android:layout_width="mach_content"
            android:layout_height="0dp"

          android:layout_weight="1"    

          android:scrollbars="none" >

            <LinearLayout
                android:id="@+id/ll"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal" >
            </LinearLayout>
        </HorizontalScrollView>

      <android.support.v4.view.ViewPager
        android:id="@+id/vp"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="10" />

   在Activity中先找到控件

   // 添加TextView
    private void addHorizontalSrcollView() {
        for (int i = 0; i < titleName.length; i++) {
            TextView tv = new TextView(this);
            tv.setId(i);
            tv.setText(titleName[i]);
            tv.setTextSize(18);
            tv.setOnClickListener(this);
            if (i == 0) {
                tv.setTextColor(Color.RED);
            } else {
                tv.setTextColor(Color.BLACK);
            }
            LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            lp.setMargins(25, 10, 25, 10);
            mLl.addView(tv, lp);
            listText.add(tv);
        }
    }


      private void initHorizontalScrollView() {
        // 得到屏幕的宽度
        mScreenWidth = getResources().getDisplayMetrics().widthPixels;
        listText = new ArrayList<TextView>();
        addHorizontalSrcollView();
        // 设置ViewPager的适配
        mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {

            @Override
            public int getCount() {
                return listText.size();
            }

            @Override
            public Fragment getItem(int arg0) {
                return MyFragment.getInstance(RequestUrlAddress.address[arg0]);
            }
        });
        // ViewPager的滑动监听
        mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                for (int i = 0; i < titleName.length; i++) {
                    TextView tv = listText.get(i);
                    if (i == arg0) {
                        tv.setTextColor(Color.RED);
                    } else {
                        tv.setTextColor(Color.BLACK);
                    }
                }
                // 设置居中
                View curTabView = mLl.getChildAt(arg0);
                // 获取x的值
                int left = curTabView.getLeft();
                int width = curTabView.getMeasuredWidth();
                int toX = left + width / 2 - mScreenWidth / 2;
                // 滚动
                mHsv.smoothScrollTo(toX, 0);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {

            }
        });
    }

     // 点击ScrollView的每一项跳转到相应的fragment中
    @Override
    public void onClick(View v) {
        mViewPager.setCurrentItem(v.getId());
    }

0 0