private HorizontalScrollView horizontalScrollView; private LinearLayout linearLayout; private ViewPager viewPager; private String[] titles; private ArrayList<TextView> titlesView; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view=inflater.inflate(R.layout.activity_zixuan,container,false); horizontalScrollView = (HorizontalScrollView) view.findViewById(R.id.hsv); linearLayout = (LinearLayout) view.findViewById(R.id.zixuan_linearLayout); viewPager = (ViewPager) view.findViewById(R.id.viewpager); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); titles=new String[]{"數據新聞","快訊","頭條","精編公告","美股","港股","基金","理財"}; initTitles(); viewPager.setAdapter(new MPagerAdapter(getActivity().getSupportFragmentManager())); setOnClickListener(); } private void initTitles() { titlesView=new ArrayList<>(); for(int i=0;i<titles.length;i++){ TextView textView = new TextView(getActivity()); textView.setTextSize(20); if(i==0){ textView.setTextColor(Color.BLUE); } textView.setText(titles[i]); textView.setId(i); textView.setOnClickListener(this); LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT); layoutParams.setMargins(10,10,10,10); linearLayout.addView(textView,layoutParams); titlesView.add(textView); } } private void setOnClickListener() { viewPager.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.length;i++){ if(i==position){ titlesView.get(i).setTextColor(Color.BLUE); } else{ titlesView.get(i).setTextColor(Color.BLACK); } } /* int width=titlesView.get(position).getWidth(); int tatalWidth=(width+20)*position;*/ int x=(int)linearLayout.getChildAt(position%titlesView.size()).getX(); horizontalScrollView.scrollTo(x,0); } @Override public void onPageScrollStateChanged(int state) { } }); } @Override public void onClick(View view) { int position=view.getId(); viewPager.setCurrentItem(position); } private class MPagerAdapter extends FragmentPagerAdapter { public MPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return MFragment.getInstance(titles[position]); } @Override public int getCount() { return titles.length; } }
HorizontalScrollView 橫向滑動標題欄的用法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.