温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

viewpager怎么在android中使用

发布时间:2021-03-25 17:10:20 来源:亿速云 阅读:195 作者:Leah 栏目:移动开发

viewpager怎么在android中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

(1)简单写一个主界面的布局activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  android:orientation="vertical"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:clipToPadding="true"  android:fitsSystemWindows="true"  android:background="@color/bg_color">  <LinearLayout  android:layout_width="match_parent"  android:layout_height="match_parent"  android:background="@color/bag_gray"  android:orientation="vertical">  <LinearLayout   android:layout_width="match_parent"   android:layout_height="36dp"   android:background="@android:color/white"   android:orientation="horizontal"   android:weightSum="3">   <TextView   android:id="@+id/tab1_tv"   android:layout_width="0dp"   android:layout_height="wrap_content"   android:layout_gravity="center"   android:layout_weight="1"   android:gravity="center"   android:text="商品"   android:textColor="@color/title_bag"   android:textSize="18sp" />   <TextView   android:id="@+id/tab2_tv"   android:layout_width="0dp"   android:layout_height="wrap_content"   android:layout_gravity="center"   android:layout_weight="1"   android:gravity="center"   android:text="评价"   android:textColor="@color/text_color_context"   android:textSize="18sp" />   <TextView   android:id="@+id/tab3_tv"   android:layout_width="0dp"   android:layout_height="wrap_content"   android:layout_gravity="center"   android:layout_weight="1"   android:gravity="center"   android:text="详情"   android:textColor="@color/text_color_context"   android:textSize="18sp" />  </LinearLayout>  <View   android:layout_width="match_parent"   android:layout_height="0.5dp"   android:background="@color/text_color_context" />  <View   android:id="@+id/cursor"   android:layout_width="50dp"   android:layout_height="2dp"   android:layout_marginLeft="40dp"   android:layout_marginTop="0dip"   android:background="@color/title_bag"   />  <android.support.v4.view.ViewPager   android:id="@+id/thire_vp"   android:layout_width="match_parent"   android:layout_height="match_parent"/>  </LinearLayout> </LinearLayout>

(2)设置viewpager的适配器:FragmentAdapter

public class FragmentAdapter extends FragmentPagerAdapter {  private ArrayList<Fragment> list;  FragmentManager fm;  public FragmentAdapter(FragmentManager fm, ArrayList<Fragment> list){  super(fm);  this.fm = fm;  this.list = list;  }  @Override  public Fragment getItem(int position) {  return list.get(position);  }  @Override  public int getCount() {  return list.size();  } }

(3)然后设置三个fragment,因为有三个选项卡,所以我们新建三个fragment,分别是OneFragment、TwoFragment 、ThreeFragment ,布局的话也需要新建三个,跟fragment一一对应,因为布局过于简单,这里就不写了,简单写一点fragment的代码吧

public class OneFragment extends Fragment {  @Nullable  @Override  public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {  View view = inflater.inflate(R.layout.fragment_one,null);  return view;  } }

(4)在MainActivity中,设置fragment的适配器,设置显示内容,并且做viewpager的事件监听

public class MainActivity extends FragmentActivity implements ViewPager.OnPageChangeListener,View.OnClickListener{  private TextView tab1Tv;  private TextView tab2Tv;  private TextView tab3Tv;  private View cursor;  private ViewPager thirdVp;  private ArrayList<Fragment> fragmentlist;  private int offset = 0;  private int screenWidth = 0;  private int screenl_3;  private LinearLayout.LayoutParams lp;  @Override  protected void onCreate(@Nullable Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_product);  //绑定控件  tab1Tv = (TextView)findViewById(R.id.tab1_tv);  tab2Tv = (TextView)findViewById(R.id.tab2_tv);  tab3Tv = (TextView)findViewById(R.id.tab3_tv);  cursor = (View) findViewById(R.id.cursor);  thirdVp = (ViewPager) findViewById(R.id.thire_vp);  //获取屏幕宽度  DisplayMetrics dm = new DisplayMetrics();  getWindowManager().getDefaultDisplay().getMetrics(dm);  screenWidth = dm.widthPixels;  screenl_3 = screenWidth/3; //裁剪3分之1  lp = (LinearLayout.LayoutParams)cursor.getLayoutParams();  fragmentlist = new ArrayList<>();  fragmentlist.add(new OneFragment());  fragmentlist.add(new TwoFragment());  fragmentlist.add(new ThreeFragment());  thirdVp.setAdapter(new FragmentAdapter(getSupportFragmentManager(),fragmentlist));  thirdVp.setCurrentItem(0);  thirdVp.setOffscreenPageLimit(2);  thirdVp.setOnPageChangeListener(this);  tab1Tv.setOnClickListener(this);  tab2Tv.setOnClickListener(this);  tab3Tv.setOnClickListener(this);  }  @Override  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {  offset = (screenl_3-cursor.getLayoutParams().width)/2;  Log.d("TAG", "111----"+position + "--" + positionOffset + "--"   + positionOffsetPixels);  final float scale = getResources().getDisplayMetrics().density;  if (position == 0){   lp.leftMargin = (int)(positionOffsetPixels/3)+offset;  }else if(position ==1){   lp.leftMargin = (int)(positionOffsetPixels/3)+screenl_3+offset;  }  cursor.setLayoutParams(lp);  upTextcolor(position);  }  private void upTextcolor(int position){  if (position==0){   tab1Tv.setTextColor(getResources().getColor(R.color.title_bag));   tab2Tv.setTextColor(getResources().getColor(R.color.text_color_context));   tab3Tv.setTextColor(getResources().getColor(R.color.text_color_context));  }else if(position==1){   tab1Tv.setTextColor(getResources().getColor(R.color.text_color_context));   tab2Tv.setTextColor(getResources().getColor(R.color.title_bag));   tab3Tv.setTextColor(getResources().getColor(R.color.text_color_context));  }else if(position==2){   tab1Tv.setTextColor(getResources().getColor(R.color.text_color_context));   tab2Tv.setTextColor(getResources().getColor(R.color.text_color_context));   tab3Tv.setTextColor(getResources().getColor(R.color.title_bag));  }  }  @Override  public void onPageSelected(int position) {  }  @Override  public void onPageScrollStateChanged(int state) {  }  @Override  public void onClick(View view) {  switch (view.getId()) {   case R.id.tab1_tv:   thirdVp.setCurrentItem(0);   break;   case R.id.tab2_tv:   thirdVp.setCurrentItem(1);   break;   case R.id.tab3_tv:   thirdVp.setCurrentItem(2);   break;  }  } }

看完上述内容,你们掌握viewpager怎么在android中使用的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI