首先就是MainActivity的布局
<LinearLayout
android:id="@+id/lin"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<HorizontalScrollView
android:id="@+id/hsv"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/ll_head"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
<android.support.v4.view.ViewPager
android:layout_below="@id/lin"
android:id="@+id/viewpage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</android.support.v4.view.ViewPager>
接着就是MainActivity了
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private LinearLayout ll_head;
private HorizontalScrollView hsv;
private String[] titles;
private List<TextView> texts;
private ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
titles=new String[]{"频道1","频道2","频道3","频道4","频道5","频道6","频道7","频道8","频道9","频道10"};
getID();
texts=new ArrayList<>();
for (int i=0;i<titles.length;i++){
TextView textView=new TextView(this);
texts.add(textView);
//给控件设置文字
textView.setText(titles[i]);
//给空间设置字体大小
textView.setTextSize(20);
textView.setTextColor(Color.BLACK);
if(i==0){
textView.setTextColor(Color.RED);
}
textView.setId(i);
//初始化一个配置参数
LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
//给参数设置margin值
layoutParams.setMargins(20,10,20,10);
textView.setOnClickListener(this);
//把参数摆放的参数设置近期
ll_head.addView(textView,layoutParams);
}
pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return MFragment.newInstance(titles[position]);
}
@Override
public int getCount() {
return titles.length;
}
});
//viewpage 的监听事件
pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
for(int i=0;i<texts.size();i++){
if(i==position){
texts.get(position).setTextColor(Color.RED);
}else{
texts.get(i).setTextColor(Color.BLACK);
}
}
}
@Override
public void onPageScrollStateChanged(int state) { }
});
}
//获取控件id
public void getID() {
ll_head =(LinearLayout)findViewById(R.id.ll_head);
hsv =(HorizontalScrollView)findViewById(R.id.hsv);
pager = (ViewPager)findViewById(R.id.viewpage);
}
//textview点击监听,切换到对应的fragment
@Override
public void onClick(View v) {
int id=v.getId();
pager.setCurrentItem(id);
}
}
下面就是fragment的布局,在这里fragment里没放控件,各位也可以在其中添加一些其它功能
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0"
>
</RelativeLayout>
下面是fragment
public class MFragment extends Fragment {
private View view;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if(view==null){
view = View.inflate(getActivity(), R.layout.mfragment,null);
}
ViewGroup group= (ViewGroup) view.getParent();
if(group!=null){
group.removeView(view);
}
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
public static Fragment newInstance(String title){
MFragment fragment=new MFragment();
Bundle bundle=new Bundle();
bundle.putString("title",title);
fragment.setArguments(bundle);
return fragment;
}
}
这是代码效果图