模仿新闻头条,上面滑动,下面ViewPager跟随滑动

 
//这是在activity_main.xml文件中的布局,线性布局LinearLayout 中信息缺少,是自动生成的,只需要 <HorizontalScrollView 往下的布局就可以了
<LinearLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
<HorizontalScrollView
   android:id="@+id/scrollview"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:scrollbars="none" >

       <LinearLayout
   	android:id="@+id/linearlayou"
   	android:layout_width="wrap_content"
   	android:layout_height="wrap_content"
   	android:orientation="horizontal"
   	android:scrollbars="none" >
       </LinearLayout>
   </HorizontalScrollView>

   <android.support.v4.view.ViewPager
  	 android:id="@+id/viewpager"
  	 android:layout_width="match_parent"
   	android:layout_height="match_parent" >
   </android.support.v4.view.ViewPager>
</LinearLayout> 
 //这只是显示了一个简单的TextView,具体内容请结合实例来创建
    
    public class MainActivity extends FragmentActivity {

        private ViewPager viewpager;
        private HorizontalScrollView horview;
        private LinearLayout layout;
        private ArrayList<String> list;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            viewpager = (ViewPager) findViewById(R.id.viewpager);
            horview = (HorizontalScrollView) findViewById(R.id.scrollview);
            layout = (LinearLayout) findViewById(R.id.linearlayou);
            list = new ArrayList<String>();
            list.add("新闻1");   list.add("新闻11111");   list.add("新闻3");
            list.add("新闻4");   list.add("新闻111"); list.add("新闻6");
            list.add("新闻7");   list.add("新闻111"); list.add("新闻9");
            list.add("新闻10");  list.add("新闻11");  list.add("新闻12");
//        设置HorizontalScrollView的内容
            for (int i = 0; i <list.size(); i++) {
                TextView view = new TextView(this);
                view.setText(list.get(i));
                view.setTextSize(20);
                if(i==0)
                    view.setTextColor(Color.RED);
                else
                    view.setTextColor(Color.BLACK);
//       给每一个TextVIew添加间距
                LayoutParams params=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                params.setMargins(20, 10, 20, 20);
                view.setLayoutParams(params);
//       设置TextVIew的点击事件,让VIewpager也随之变化
                final int n=i;
                view.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        viewpager.setCurrentItem(n);
                        for (int j = 0; j < list.size(); j++) {
                            TextView tv=(TextView) layout.getChildAt(j);
                            if(n==j)
                                tv.setTextColor(Color.RED);
                            else
                                tv.setTextColor(Color.BLACK);
                        }
                    }
                });


//       把这个Textview添加到LinearLayout中
                layout.addView(view);
            }
//        给ViewPager增加适配器
            viewpager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {

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

                @Override
                public Fragment getItem(int arg0) {
                    return FragMent1.getFragment(list.get(arg0));
                }
            });
//        viewpager设置监听事件
            viewpager.setOnPageChangeListener(new OnPageChangeListener() {

                @Override
                public void onPageSelected(int index) {
//          先设置VIewPager滑动的时候上面的标题也设置滑动,
                    int width=0;
                    for (int j = 0; j < index; j++) {
                        TextView text = (TextView) layout.getChildAt(j);
                        width+=text.getWidth();
                    }
//          因为左右间距都是20,所有*40
                    width=index*40+width;
//          HorizontalScrollView设置滑动距离
                    horview.scrollTo(width, 0);

//          设置ViewPager滑动的时候上面的标题颜色也随之改变
                    for (int i = 0; i < list.size(); i++) {
                        TextView textview = (TextView) layout.getChildAt(i);
                        if(index==i)
                            textview.setTextColor(Color.RED);
                        else
                            textview.setTextColor(Color.BLACK);

                    }
                }

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

                }

                @Override
                public void onPageScrollStateChanged(int arg0) {

                }
            });
        }
    }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值