zoukankan      html  css  js  c++  java
  • 横向滑动菜单HorizontalScrollView

    public class MainActivity extends FragmentActivity {

        private HorizontalScrollView hsv;//
        private LinearLayout nav_ll;//
        private ViewPager nav_vp;
        private int itemWidth;//
        private int selectItemIndex = 0;
        private int screenWidth;
        private List<String> type;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            type = MyTools.getType();

            //
            hsv = (HorizontalScrollView) findViewById(R.id.nav_HorizontalScrollView);
            hsv.setHorizontalScrollBarEnabled(false);
            nav_ll = (LinearLayout) findViewById(R.id.nav_ll);

            nav_vp = (ViewPager) findViewById(R.id.nav_vp);

            //
            setNav();

            //
            setViewPager();

        }

        private void setViewPager() {
            //
            List<Fragment> fragmentList = new ArrayList<Fragment>();
            for (int i = 0; i < MyTools.getType().size(); i++) {

                MyFragment frame = new MyFragment(type.get(i));
                //
                fragmentList.add(frame);
            }

            //
            MyFragmentAdapter fragmentAdapter = new MyFragmentAdapter(
                    getSupportFragmentManager(), fragmentList);
            nav_vp.setAdapter(fragmentAdapter);

            //
            nav_vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                @Override
                public void onPageScrolled(int position, float positionOffset,
                        int positionOffsetPixels) {

                }

                @Override
                public void onPageSelected(int position) {
                    nav_vp.setCurrentItem(position);
                    selectType(position);
                }

                @Override
                public void onPageScrollStateChanged(int state) {

                }
            });
        }

        private void setNav() {

            //
            DisplayMetrics metrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(metrics);
            screenWidth = metrics.widthPixels;
            //
            itemWidth = screenWidth / type.size();
            Log.i("---->", MyTools.getType().toString());
            for (int i = 0; i < MyTools.getType().size(); i++) {
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                        itemWidth, RadioGroup.LayoutParams.WRAP_CONTENT);
                //
                params.leftMargin = 10;
                params.rightMargin = 10;

                //
                TextView localTextView = new TextView(this);
                //
                localTextView.setText(MyTools.getType().get(i));
                localTextView.setTextSize(16.0f);
                localTextView.setBackgroundResource(R.drawable.nav_tv_bg);
                localTextView.setPadding(5, 15, 5, 15);
                localTextView.setGravity(Gravity.CENTER);
                if (selectItemIndex == i) {
                    localTextView.setSelected(true);
                }
                //
                localTextView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                        for (int i = 0; i < nav_ll.getChildCount(); i++) {
                            TextView tv = (TextView) nav_ll.getChildAt(i);
                            if (tv == v) {
                                tv.setSelected(true);
                                nav_vp.setCurrentItem(i);
                            } else {
                                tv.setSelected(false);
                            }
                        }

                    }
                });
                nav_ll.addView(localTextView, i, params);
            }
        }

        public void selectType(int tab_position) {
            selectItemIndex = tab_position;
            //
            for (int i = 0; i < nav_ll.getChildCount(); i++) {
                TextView tv0 = (TextView) nav_ll.getChildAt(tab_position);
                int k = tv0.getMeasuredWidth();
                int l = tv0.getLeft();
                int i2 = l + k / 2 - screenWidth / 2;//
                hsv.smoothScrollTo(i2, 0);
            }
            //
            for (int i = 0; i < nav_ll.getChildCount(); i++) {
                View view = nav_ll.getChildAt(i);
                if (tab_position == i) {
                    view.setSelected(true);
                } else {
                    view.setSelected(false);
                }
            }
        }
    }




    xml


    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:orientation="horizontal">

            <HorizontalScrollView
                android:id="@+id/nav_HorizontalScrollView"
                android:layout_width="0dp"
                android:layout_height="50dp"
                android:layout_weight="9"
                android:fillViewport="false">

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

                </LinearLayout>
            </HorizontalScrollView>



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

    </LinearLayout>

  • 相关阅读:
    stl 之 next_permutation 求出一个排序的下一个排列的函数 转载
    算法学习一~分治法~二分查找,快速的找~
    Cocos2d开发系列(九)
    每个好架构师都是一位出色的程序员
    本地通知和推送通知编程指南(2)
    【Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;
    【Cocos2d游戏开发之十三】CCSprite利用Bezier(贝塞尔)做抛物线动作并让CCSprite同时播放两个Action动作!
    【Cocos2d游戏开发之八】开启高清(960*640)模式问题与解答、图片适配以及设置iphone横竖屏
    使用SQL 2008进行INSERT操作
    【Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
  • 原文地址:https://www.cnblogs.com/cuizhe/p/5272827.html
Copyright © 2011-2022 走看看