1.写在xml
<?xml version="1.0" encoding="utf-8"?> <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=".MainActivity"> <HorizontalScrollView android:id="@+id/hs" android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollbars="none" > <LinearLayout android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/hs"/> </RelativeLayout>
2.写activity中
import android.graphics.Color; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.HorizontalScrollView; import android.widget.LinearLayout; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private HorizontalScrollView hs; private LinearLayout ll; private ViewPager viewPager; //定义数组标题 private String[] titles={"头条","娱乐","科技","信息","八卦","生活"}; //定义集合 里面装TextView List<TextView> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取资源ID hs=findViewById(R.id.hs); ll=findViewById(R.id.ll); viewPager=findViewById(R.id.viewpager); //创建集合 list=new ArrayList<>(); //遍历数组 for (int i=0;i<titles.length;i++){ //创建TextView TextView textView=new TextView(this); //根据下标得到标题 textView.setText(titles[i]); //每个标题字的大小 textView.setTextSize(20); //id textView.setId(i); //textview的点击事件 textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //得到Id int id = view.getId(); //根据id得到viewpager的条目 viewPager.setCurrentItem(id); } }); //刚进程序第一个默认红色,其他为黑色 if(i==0){ textView.setTextColor(Color.RED); }else { textView.setTextColor(Color.BLACK); } //创建布局 LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); //设置LinearLayout 左右宽高 layoutParams.setMargins(50,10,50,10); //添加到布局中 ll.addView(textView,layoutParams); //添加到集合中 list.add(textView); } //viewpager的适配器 viewPager.setAdapter(new MyAdapter(getSupportFragmentManager())); //viewpager的监听 viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override //滑动改变颜色 public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { for (int i=0;i<list.size();i++){ //list中存放的是 TextView 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; //让scrollView滑动 滑动距离是textview之间的间距 hs.scrollTo(width*position,0); } } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); } class MyAdapter extends FragmentPagerAdapter { public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return FragmentOne.getInstance(list.get(position).getText().toString()); } @Override public int getCount() { return list.size(); } } } 3.定义一个fragement import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView;
public class Fragment1 extends Fragment { public static Fragment getinstance(String title){ //创建Fragment1 Fragment1 fragment1 = new Fragment1(); //创建bundle Bundle bundle = new Bundle(); //添加值 bundle.putString("title",title); //把值添加到Arguments中 fragment1.setArguments(bundle); return fragment1; } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { //获取Arguments Bundle arguments = getArguments(); //获取值 String title = arguments.getString("title"); //创建textview TextView textView = new TextView(getActivity()); //设置值 textView.setText(title); return textView; } }