定义底部导航栏xml
导航按钮选中不选中切换xml
创建fragment类 会自动生成 xml
package com.example.myapplication;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.viewpager2.widget.ViewPager2;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class BlankFragment extends Fragment {
private static final String ARG_PARAM1 = "param1";
private String mParam1;
private View view;
public BlankFragment() {
// Required empty public constructor
}
public static BlankFragment newInstance(String param1) {
BlankFragment fragment = new BlankFragment();
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 (view == null) {
view = inflater.inflate(R.layout.fragment_blank, container, false);
}
initView();
return view;
}
private void initView() {
TextView textView = view.findViewById(R.id.test01);
textView.setText(mParam1);
}
}
生成定义 fragment xml
viewPager2 需要的适配器
package com.example.myapplication;
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.ArrayList;
import java.util.List;
public class MyFragmentAdapter extends FragmentStateAdapter {
private List fragmentList = new ArrayList<>();
public MyFragmentAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle,List fragments) {
super(fragmentManager, lifecycle);
this.fragmentList = fragments;
}
@NonNull
@Override
public Fragment createFragment(int position) {
//获取fragment
return fragmentList.get(position);
}
//总页数
@Override
public int getItemCount() {
return fragmentList.size();
}
}
mianActivity
package com.example.myapplication;
import android.os.Bundle;
import android.text.Layout;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.frameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public class MainActivity extends AppCompatActivity implements View.onClickListener {
ViewPager2 viewPager2;
private LinearLayout l1, l2, l3, l4;
private ImageView i1, i2, i3, i4, iCurrent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initPager();
initTableView();
}
private void initTableView() {
l1 = findViewById(R.id.but1);
//监听组件点击事件
l1.setonClickListener(this);
l2 = findViewById(R.id.but2);
l2.setonClickListener(this);
l3 = findViewById(R.id.but3);
l3.setonClickListener(this);
l4 = findViewById(R.id.but4);
l4.setonClickListener(this);
i1 = findViewById(R.id.img1);
i2 = findViewById(R.id.img2);
i3 = findViewById(R.id.img3);
i4 = findViewById(R.id.img4);
//默认第一个选中
i1.setSelected(true);
//记录当前选中按钮
iCurrent = i1;
}
private void initPager() {
viewPager2 = findViewById(R.id.view_page1);
List fragments = new ArrayList<>();
fragments.add(BlankFragment.newInstance("第一页"));
fragments.add(BlankFragment.newInstance("第二页"));
fragments.add(BlankFragment.newInstance("第三页"));
fragments.add(BlankFragment.newInstance("第四页"));
fragments.add(BlankFragment.newInstance("第五页"));
fragments.add(BlankFragment.newInstance("第六页"));
MyFragmentAdapter fragmentAdapter = new MyFragmentAdapter(getSupportFragmentManager(), getLifecycle(), fragments);
viewPager2.setAdapter(fragmentAdapter);
//回调函数,详情百度
viewPager2.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);
changeTable(position);
}
@Override
public void onPageScrollStateChanged(int state) {
super.onPageScrollStateChanged(state);
}
});
}
private void changeTable(int position) {
iCurrent.setSelected(false);
switch (position) {
//跳转到指定pageView
case R.id.but1:
viewPager2.setCurrentItem(0);
break;
case R.id.but2:
viewPager2.setCurrentItem(1);
break;
case R.id.but3:
viewPager2.setCurrentItem(2);
break;
case R.id.but4:
viewPager2.setCurrentItem(3);
break;
//按钮变色
case 0:
i1.setSelected(true);
iCurrent = i1;
break;
case 1:
i2.setSelected(true);
iCurrent = i2;
break;
case 2:
i3.setSelected(true);
iCurrent = i3;
break;
case 3:
i4.setSelected(true);
iCurrent = i4;
break;
default:
}
}
//点击事件
@Override
public void onClick(View v) {
changeTable(v.getId());
}
}
activity_main.xml