HorizontalScrollView滑动

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);
            }
        });

    }

}














猜你喜欢

转载自blog.csdn.net/weixin_42493753/article/details/80793765