主Activity
package com.chengzis.nextstage;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.chengzis.nextstage.adapter.FragmentAdapter;
import com.chengzis.nextstage.fragment.ViewPager2Fragment1;
import java.util.ArrayList;
import java.util.List;
/**
* ViewPager2+Fragment联动
* 1.先写全屏 (1.fragment adapter extends )
* <p>
* 2.在写下面的tab
*/
/**
* 知识点;
* FragmentManager getSupportFragmentManager()
*
* @author 83765
*/
public class ViewPager2Fragment extends AppCompatActivity implements View.OnClickListener {
private LinearLayout lv1, lv2, lv3, lv4;
private ImageView iv1, iv2, iv3, iv4;
private ViewPager2 vp2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager2_fragment);
initPager();
initTabView();
}
private void initTabView() {
lv1 = findViewById(R.id.Lv_1);
lv2 = findViewById(R.id.Lv_2);
lv3 = findViewById(R.id.Lv_3);
lv4 = findViewById(R.id.Lv_4);
lv1.setOnClickListener(this);
lv2.setOnClickListener(this);
lv3.setOnClickListener(this);
lv4.setOnClickListener(this);
iv1 = findViewById(R.id.iv_1);
iv2 = findViewById(R.id.iv_2);
iv3 = findViewById(R.id.iv_3);
iv4 = findViewById(R.id.iv_4);
}
private void initPager() {
vp2 = findViewById(R.id.vp2);
ViewPager2Fragment1 fragment1 = new ViewPager2Fragment1();
List<Fragment> fragmentList = new ArrayList<>();
fragmentList.add(ViewPager2Fragment1.newInstance("微信"));
fragmentList.add(ViewPager2Fragment1.newInstance("通讯录"));
fragmentList.add(ViewPager2Fragment1.newInstance("发现"));
fragmentList.add(ViewPager2Fragment1.newInstance("我"));
FragmentAdapter fragmentAdapter = new FragmentAdapter(getSupportFragmentManager(), getLifecycle(), fragmentList);
vp2.setAdapter(fragmentAdapter);
/**
* ViewPager2监听
*
*/
vp2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
//页面滚动
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
super.onPageScrolled(position, positionOffset, positionOffsetPixels);
}
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
changeTab(position);
}
});
}
private void changeTab(int position) {
switch (position) {
case R.id.Lv_1:
vp2.setCurrentItem(0);
case 0:
iv1.setSelected(true);
iv2.setSelected(false);
iv3.setSelected(false);
iv4.setSelected(false);
break;
case R.id.Lv_2:
vp2.setCurrentItem(1);
case 1:
iv1.setSelected(false);
iv2.setSelected(true);
iv3.setSelected(false);
iv4.setSelected(false);
break;
case R.id.Lv_3:
vp2.setCurrentItem(2);
case 2:
iv1.setSelected(false);
iv2.setSelected(false);
iv3.setSelected(true);
iv4.setSelected(false);
break;
case R.id.Lv_4:
vp2.setCurrentItem(3);
case 3:
iv1.setSelected(false);
iv2.setSelected(false);
iv3.setSelected(false);
iv4.setSelected(true);
break;
default:
break;
}
}
/**
* 线性布局点击事件
*
* @param v
*/
@Override
public void onClick(View v) {
changeTab(v.getId());
}
}
主xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:layout_height="match_parent">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/vp2"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<include layout="@layout/tab_item"/>
</LinearLayout>
adpter
package com.chengzis.nextstage.adapter;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Lifecycle;
import androidx.viewpager2.adapter.FragmentStateAdapter;
import java.util.List;
/**
* viewpager2的适配器
* @author 83765
*/
public class FragmentAdapter extends FragmentStateAdapter {
List<Fragment> fragments ;
public FragmentAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle, List<Fragment> fragments) {
super(fragmentManager, lifecycle);
this.fragments = fragments;
}
@NonNull
@Override
public Fragment createFragment(int position) {
return fragments.get(position);
}
@Override
public int getItemCount() {
return fragments.size();
}
}
fragment
package com.chengzis.nextstage.fragment;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.chengzis.nextstage.R;
/**
* @author 83765
*/
public class ViewPager2Fragment1 extends Fragment {
private static final String ARG_PARAM1 = "param1";
private String mParam1;
private View root;
public ViewPager2Fragment1() {
}
public static ViewPager2Fragment1 newInstance(String param1) {
ViewPager2Fragment1 fragment = new ViewPager2Fragment1();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if(root==null){
root = inflater.inflate(R.layout.fragment_view_pager2_, container, false);
TextView tv = root.findViewById(R.id.tv_change);
tv.setText(mParam1);
}
return root;
}
}
tab_item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/Lv_1"
android:orientation="vertical"
android:gravity="center"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_1"
android:src="@drawable/tab_weixiin"
android:layout_width="40dp"
android:layout_height="40dp" />
<TextView
android:text="微信"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/Lv_2"
android:orientation="vertical"
android:gravity="center"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_2"
android:src="@drawable/tab_weixiin"
android:layout_width="40dp"
android:layout_height="40dp" />
<TextView
android:text="通讯录"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/Lv_3"
android:orientation="vertical"
android:gravity="center"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_3"
android:src="@drawable/tab_weixiin"
android:layout_width="40dp"
android:layout_height="40dp" />
<TextView
android:text="发现"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:id="@+id/Lv_4"
android:orientation="vertical"
android:gravity="center"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_4"
android:src="@drawable/tab_weixiin"
android:layout_width="40dp"
android:layout_height="40dp" />
<TextView
android:text="我"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
版权声明:本文为tzztzz01原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。