本文演示了Android Studio中使用ViewPager實現頁面切換的方法。通過創建包含3個頁面的ViewPager示例,詳細展示了實現步驟:1)在XML布局中配置ViewPager和切換按鈕;2)使用LayoutInflater動態加載頁面布局;3)自定義SimplePagerAdapter適配器;4)通過setCurrentItem()方法實現按鈕點擊切換頁面功能。代碼包含完整的Activity、Adapter實現以及頁面布局示例,適用于基礎ViewPager使用場景,如需ViewPager2版本也可提供。
實施軟件android studio
目標:
ViewPager類型的使用;
LayoutInflater類型布置頁面;
pages存儲頁面類型;
按鈕跳轉到頁面1;
實施代碼:
當然可以!下面是一個完整示例,演示如何使用 ViewPager
和 setCurrentItem()
方法來切換頁面。我們用三個簡單的頁面作為演示內容。
? 示例:點擊按鈕切換 ViewPager 頁面(使用 setCurrentItem
)
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"><Buttonandroid:id="@+id/btnPage1"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="跳轉到第1頁" /><androidx.viewpager.widget.ViewPagerandroid:id="@+id/viewPager"android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1" />
</LinearLayout>
2. MainActivity.java
代碼:
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import java.util.ArrayList;
import java.util.List;
import android.view.LayoutInflater;
import android.view.ViewGroup;public class MainActivity extends AppCompatActivity {private ViewPager mViewPager;private Button btnPage1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mViewPager = findViewById(R.id.viewPager);btnPage1 = findViewById(R.id.btnPage1);// 創建頁面視圖List<View> pages = new ArrayList<>();LayoutInflater inflater = getLayoutInflater();pages.add(inflater.inflate(R.layout.page1, null));pages.add(inflater.inflate(R.layout.page2, null));pages.add(inflater.inflate(R.layout.page3, null));// 設置適配器SimplePagerAdapter adapter = new SimplePagerAdapter(pages);mViewPager.setAdapter(adapter);// 點擊按鈕跳轉到第一頁btnPage1.setOnClickListener(v -> mViewPager.setCurrentItem(0)); // index 0 = 第1頁}
}
3. SimplePagerAdapter:
package com.example.myapplication;import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import androidx.viewpager.widget.PagerAdapter;
import java.util.List;public class SimplePagerAdapter extends PagerAdapter {private final List<View> mViewList;public SimplePagerAdapter(List<View> viewList) {this.mViewList = viewList;}@Overridepublic int getCount() {return mViewList.size();}@Overridepublic boolean isViewFromObject(View view, Object object) {boolean result = (view == object);Log.d("isViewFromObject", "判斷結果: " + result);return result;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {View view = mViewList.get(position);container.addView(view);return view;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}
}
4. 示例頁面布局 page1.xml
、page2.xml
、page3.xml
例如 res/layout/page1.xml
:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"android:text="頁面 1"android:textSize="30sp" />
另外兩個頁面內容類似,改一下 text="頁面 2"
和 text="頁面 3"
即可。
如果你使用的是 ViewPager2
而不是舊的 ViewPager
,用法稍有不同,我也可以給你新版代碼。需要的話可以告訴我。
運行效果: