ViewPager.getChildCount() 含义

本文详细解释了在Android开发中,ViewPager的getChildCount()方法的实际含义。它返回的是当前可见的页面数量,而非总的页面数量。文章通过实例展示了在不同滑动状态下,此方法返回值的变化情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

viewpager.getChildCount() 很容易误解成viewpager子页面的size,它和getCount还是有区别的

getChildCount() 是表示当前可见页size

比如:Viewpager总共3页

当到第一页时候可见页面为2(在滑动过程,可见第一张和第二张),getChildCount() =2,

当到第二页时候可见页为3(在左右滑动过程,可见第一张,第二张和第三张)getChildCount() =3,

当到第三页时候可见页为2(在滑动过程,可见第二张和第三张)getChildCount() =2,

package com.example.mymouleb; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; import com.google.android.material.tabs.TabLayout; import java.util.ArrayList; import java.util.List; import android.view.ViewGroup; import androidx.annotation.NonNull; public class LauncherActivity extends AppCompatActivity { private ViewPager viewPager; private TabLayout tabLayout; private GuidePageAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_launcher); viewPager = findViewById(R.id.viewPager); tabLayout = findViewById(R.id.tabLayout); // 准备引导页图片资源ID列表 List<Integer> imageResIds = new ArrayList<>(); imageResIds.add(R.drawable.page1); // 替换为实际图片资源ID imageResIds.add(R.drawable.page2); imageResIds.add(R.drawable.page3); adapter = new GuidePageAdapter(imageResIds); viewPager.setAdapter(adapter); tabLayout.setupWithViewPager(viewPager); // 设置第一个小圆点为实心白色(选中状态) tabLayout.getTabAt(0).select(); } public class GuidePageAdapter extends PagerAdapter { private final List<Integer> imageResIds; // 图片资源ID列表 public GuidePageAdapter(List<Integer> imageResIds) { this.imageResIds = imageResIds; } @Override public int getCount() { return imageResIds != null ? imageResIds.size() : 0; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { // 加载布局的正确方式:第三个参数必须为false View itemView = LayoutInflater.from(container.getContext()) .inflate(R.layout.page_layout, container, false); ImageView imageView = itemView.findViewById(R.id.guide_image); imageView.setImageResource(imageResIds.get(position)); container.addView(itemView); // 必须手动添加视图 return itemView; // 返回的Object必须是页面视图对象 } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { // 强制类型转换并移除视图 container.removeView((View) object); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { // 判断视图是否来自instantiateItem返回的对象 return view == object; } } }给这个代码的结果页面上加上引导页指示器,且在下方显示三个小圆点,在第一页时圆点为白色,其余圆点为透明色,第二页用理,到第三页时不显示小圆点,添加一个开启按钮,点击后跳转到LoginActivity
最新发布
05-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值