類似上一篇文章 Android - ViewPager2
只是改用Fragment實現每個頁面
在activity_main.xml中添加 androidx.viewpager2.widget.ViewPager2
控件, 有些版本可能提示無此控件,需要在 build.gradle
中添加依賴:implementation 'androidx.viewpager2:viewpager2:1.0.0'
添加ViewPager2控件后,activity_main.xml
代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_height="match_parent"tools:context=".MainActivity"><androidx.viewpager2.widget.ViewPager2android:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></androidx.constraintlayout.widget.ConstraintLayout>
layout右鍵new,選擇Fragment -> Fragment(Blank)
添加后會出現 fragment_blank.xml
和 BlankFragment.java
兩個文件。
fragment_blank.xml
中的代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"tools:context=".BlankFragment"><!-- TODO: Update blank fragment layout --><TextViewandroid:id="@+id/fragment_tv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:textSize="30sp"android:text="@string/hello_blank_fragment" /></FrameLayout>
BlankFragment.java
代碼修改如下:
public class BlankFragment extends Fragment {// TODO: Rename parameter arguments, choose names that match// the fragment initialization parameters, e.g. ARG_ITEM_NUMBERprivate static final String ARG_PARAM1 = "param1";// TODO: Rename and change types of parametersprivate String mParam1;private TextView mFragmentTv;private View mFragmentView;public BlankFragment() {// Required empty public constructor}/*** Use this factory method to create a new instance of* this fragment using the provided parameters.** @param param1 Parameter 1.* @return A new instance of fragment BlankFragment.*/// TODO: Rename and change types and number of parameterspublic static BlankFragment newInstance(String param1) {BlankFragment fragment = new BlankFragment();Bundle args = new Bundle();args.putString(ARG_PARAM1, param1);fragment.setArguments(args);return fragment;}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (getArguments() != null) {mParam1 = getArguments().getString(ARG_PARAM1);}}@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {// Inflate the layout for this fragmentif (mFragmentView == null){mFragmentView = inflater.inflate(R.layout.fragment_blank, container, false);mFragmentTv = mFragmentView.findViewById(R.id.fragment_tv);mFragmentTv.setText(mParam1);}return mFragmentView;}
}
public class MyFragmentStateAdapter extends FragmentStateAdapter {private List<Fragment> mFragmentList;public MyFragmentStateAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle, List<Fragment> fragments) {super(fragmentManager, lifecycle);mFragmentList = fragments;}@NonNull@Overridepublic Fragment createFragment(int position) {return mFragmentList.get(position);}@Overridepublic int getItemCount() {return mFragmentList.size();}
}
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ViewPager2 viewPager2 = findViewById(R.id.viewpager);List<Fragment> fragmentList = new ArrayList<>();fragmentList.add(BlankFragment.newInstance("第一個頁面"));fragmentList.add(BlankFragment.newInstance("第二個頁面"));fragmentList.add(BlankFragment.newInstance("第三個頁面"));fragmentList.add(BlankFragment.newInstance("第四個頁面"));fragmentList.add(BlankFragment.newInstance("第五個頁面"));viewPager2.setAdapter(new MyFragmentStateAdapter(getSupportFragmentManager(), getLifecycle(), fragmentList));}
}
ViewPager2 Fragment 示例代碼
更多詳細ViewPager2的例子,可以參考Android官方示例:Android ViewPager2 官方示例
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态