1:创建布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.zhoukao3_1.MainActivity"> <HorizontalScrollView android:id="@+id/hsv" android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="none" > <LinearLayout android:id="@+id/line" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > </LinearLayout> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/hsv" /> </RelativeLayout>
2:MainActivity里的逻辑
private ViewPager viewPager; private HorizontalScrollView horizontalScrollView; private LinearLayout linearLayout; private String[] titles={"推荐","北京","大燕网","娱乐","军事","体育","文化"}; private List<TextView> list=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取资源id viewPager=findViewById(R.id.viewpager); horizontalScrollView=findViewById(R.id.hsv); linearLayout=findViewById(R.id.line); //动态添加分类 for(int i=0;i<titles.length;i++){ //创建textview final TextView textView=new TextView(this); textView.setText(titles[i]); textView.setTextSize(25); textView.setId(i); //textview的监听(根据id得到当前的页数) textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int id = view.getId(); viewPager.setCurrentItem(id); } }); //设置默认选中的颜色 if(i==0){ textView.setTextColor(Color.RED); }else{ textView.setTextColor(Color.BLACK); } //设置textview的宽高以及间距 LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.setMargins(50,10,50,10); //添加到布局中 linearLayout.addView(textView,layoutParams); //放入list集合中 list.add(textView); } //viewpager创建适配器 viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return Fragment1.getInstance(list.get(position).getText().toString()); } @Override public int getCount() { return list.size(); } }); //切换页面 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 textView = list.get(position); //得到宽度 int width = textView.getWidth()+10; horizontalScrollView.scrollTo(width*position,0); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); } } 3:创建一个Fragment 3.1:布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <RelativeLayout android:id="@+id/relative" android:layout_width="match_parent" android:layout_height="170dp"> <android.support.v4.view.ViewPager android:id="@+id/viewpager2" android:layout_width="match_parent" android:layout_height="match_parent" /> <LinearLayout android:id="@+id/line2" android:layout_width="match_parent" android:layout_height="25dp" android:orientation="horizontal" android:gravity="center" android:layout_alignParentBottom="true" > </LinearLayout> </RelativeLayout> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="wrap_content"> </ListView> </LinearLayout>4:viewpager和lstview展示
public class Fragment1 extends Fragment { private String[] images={ "https://www.zhaoapi.cn/images/quarter/ad1.png", "https://www.zhaoapi.cn/images/quarter/ad2.png", "https://www.zhaoapi.cn/images/quarter/ad3.png", "https://www.zhaoapi.cn/images/quarter/ad4.png" }; private MyBase adapter1; private ListView listView; private ViewPager viewPager2; private ViewPagerAdapter adapter; private RelativeLayout relativeLayout; private LinearLayout linearLayout; private HttpUtils httpUtils=HttpUtils.getInstance(); private String path="https://www.zhaoapi.cn/ad/getAd"; private List<ImageView> list=new ArrayList<>(); private View view; private int i;//接收当前的页 private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //接收当前的位置 i=viewPager2.getCurrentItem(); //改变页的选中 viewPager2.setCurrentItem(i+1); handler.sendEmptyMessageDelayed(1,2000); } }; public static Fragment getInstance(String titles){ //创建fragment Fragment1 fragment1=new Fragment1(); //创建bundle Bundle bundle=new Bundle(); //添加至 bundle.putString("titles",titles); //把值添加到arguments fragment1.setArguments(bundle); return fragment1; } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { /*///获取arguments Bundle arguments = getArguments(); //获取之 String title = arguments.getString("titles"); //创建textview TextView textView=new TextView(getActivity()); //设置值 textView.setText(title);*/ //获取子布局 view=inflater.inflate(R.layout.fragment1,container,false); //获取资源id linearLayout=view.findViewById(R.id.line2); viewPager2=view.findViewById(R.id.viewpager2); listView=view.findViewById(R.id.listview); //得到网络请求数据 getData(); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); ///获取arguments Bundle arguments = getArguments(); //获取之 String titles = arguments.getString("titles"); if(arguments.get("titles").equals("推荐")){ //创建圆点 //创建适配器 adapter=new ViewPagerAdapter(images,getActivity()); viewPager2.setAdapter(adapter); //开始轮播 handler.sendEmptyMessageDelayed(1,2000); }else { relativeLayout=view.findViewById(R.id.relative); relativeLayout.setVisibility(View.GONE); getData(); } } private void getData() { //得到数据 httpUtils.getdata(path); httpUtils.setHttpListener(new HttpUtils.HttpListener() { @Override public void getjsondata(String json) { Gson gson=new Gson(); NewsBean newsBean = gson.fromJson(json, NewsBean.class); List<NewsBean.DataBean> data = newsBean.getData(); //创建适配器 adapter1=new MyBase(getActivity(),data); listView.setAdapter(adapter1); } }); } }