布局
<LinearLayout android:id="@+id/fragmentoneliner" android:layout_width="match_parent" android:layout_height="60dp" android:orientation="horizontal" > <HorizontalScrollView android:id="@+id/hs" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="9" > <LinearLayout android:id="@+id/fragment_one_liner01" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > </LinearLayout> </HorizontalScrollView> <ImageView android:id="@+id/hs_Imageview" android:layout_width="0dp" android:layout_height="wrap_content" android:background="@drawable/detail_subscribe_night" android:layout_weight="1" android:drawableTint="#fff" /> </LinearLayout> <android.support.v4.view.ViewPager android:id="@+id/viewfragment_one" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager>
public class FragmentOne extends Fragment { private ImageView imageView; private HorizontalScrollView hs; private LinearLayout li; private ViewPager viewPager; private List<TextView> list; private ArrayList<ChannelBean> channelBeans; private String jsonStr; @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragmentone,container,false); //获得组件 initview(view); return view; } private void initview(View view) { imageView = view.findViewById(R.id.hs_Imageview); hs = view.findViewById(R.id.hs); li = view.findViewById(R.id.fragment_one_liner01); viewPager = view.findViewById(R.id.viewfragment_one); //获得数据 initdata(); } private void initdata() { list = new ArrayList<>(); channelBeans = new ArrayList<>(); //"头条", "娱乐", "科技", "信息", "八卦", "北京", "上海", "天津","重庆", "大大燕网" channelBeans.add(new ChannelBean("头条",true)); channelBeans.add(new ChannelBean("娱乐",true)); channelBeans.add(new ChannelBean("科技",true)); channelBeans.add(new ChannelBean("信息",true)); channelBeans.add(new ChannelBean("八卦",true)); channelBeans.add(new ChannelBean("北京",true)); channelBeans.add(new ChannelBean("上海",false)); channelBeans.add(new ChannelBean("天津",false)); channelBeans.add(new ChannelBean("重庆",false)); channelBeans.add(new ChannelBean("大大燕网",false)); for (int i = 0; i <channelBeans.size() ; i++) { TextView textView = new TextView(getActivity()); textView.setText(channelBeans.get(i).getName()); textView.setTextSize(20); textView.setId(i+1000); //点击换页 textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int id = view.getId(); viewPager.setCurrentItem(id-1000); } }); //判断颜色 if (i == 0 ){ textView.setTextColor(Color.RED); }else { textView.setTextColor(Color.BLACK); } if(channelBeans.get(i).isSelect()){ textView.setVisibility(View.VISIBLE); }else { textView.setVisibility(View.GONE); } //添加linear LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); layoutParams.setMargins(20,10,20,10); li.addView(textView,layoutParams); //添加集合 list.add(textView); } viewPager.setAdapter(new MyAdapter(getActivity().getSupportFragmentManager())); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { for (int i = 0; i <list.size() ; i++) { if (position==i){ list.get(i).setTextColor(Color.RED); }else { list.get(i).setTextColor(Color.BLACK); } } TextView textView=list.get(position); int width = textView.getWidth()+10; hs.scrollTo(width*position,0); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); imageView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (jsonStr == null){ ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),channelBeans); }else { ChannelActivity.startChannelActivity((AppCompatActivity) getActivity(),jsonStr); } } }); } //内部类适配器 private class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return FragmentOne_One.getInstance( list.get(position).getText().toString()); } @Override public int getCount() { return list.size(); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode==ChannelActivity.REQUEST_CODE&&resultCode==ChannelActivity.RESULT_CODE) { jsonStr = data.getStringExtra(ChannelActivity.RESULT_JSON_KEY); } } }