activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<com.google.android.material.tabs.TabLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/tabLayout" />
<androidx.viewpager2.widget.ViewPager2
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewpager2" />
</LinearLayout>
MainActivity.java:
package com.example.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator;
public class MainActivity extends AppCompatActivity {
// tabLayout的标题
private String[] tabTitle = {"推荐", "视频", "图文", "旅行", "科技数码", "科技数码"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabLayout tableLayout = findViewById(R.id.tabLayout);
ViewPager2 viewPager2 = findViewById(R.id.viewpager2);
// 设置横向滑动
tableLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
viewPager2.setAdapter(new MyAdapter());
TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(tableLayout, viewPager2, (tab, position) -> {
// 设置tabLayout的标题
tab.setText(tabTitle[position]);
});
// 应用生效
tabLayoutMediator.attach();
// 禁止viewpager2左右滑动
viewPager2.setUserInputEnabled(false);
}
class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.viewpager2, parent, false));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return tabTitle.length;
}
class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(@NonNull View itemView) {
super(itemView);
}
}
}
}
要想禁止viewPager2的左右滑动,就要用:
viewPager2.setUserInputEnabled(false);
当然,点击tabLayout的话,还是可以切换的。