//这是在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) { } }); } }
模仿新闻头条,上面滑动,下面ViewPager跟随滑动
最新推荐文章于 2021-05-25 19:17:11 发布