android viewpager

ttp71kqs  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(328)

我正在学习,如何创建一个android库,我创建了一个简单的入职库。但是我的custum模块的viewpager有问题。当我左右滑动时,我的秒项目不显示,或者第一和第二视图重叠。
我不明白问题从何而来

[![在此处输入图像描述][2]][2]
[![ ][3]][3]
我的图书馆的主要课程:
公共类onboardingview扩展framelayout实现lifecycleobserver{

public OnBoardingView(@NonNull Context context) {
    super(context, null);
    this.initialize(context, null);
}

public OnBoardingView(@NonNull Context context, @NonNull AttributeSet attrs) {
    super(context, attrs);
    this.initialize(context, attrs);
}

private void initialize(@NonNull Context context, @Nullable AttributeSet attrs) {
    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    inflater.inflate(R.layout.onboarding_view_root, this);

    List<String> list = new ArrayList<String>();
    list.add("Hello world 1");
    list.add("Hello world 2");
    list.add("Hello world 3");

    ViewPager viewPager = findViewById(R.id._screenPager);
    OnBoardingAdapter<String> onBoardingAdapter = new OnBoardingAdapter<String>(context, list);
    viewPager.setAdapter(onBoardingAdapter);
}

}
我的适配器:
公共类onboardingadapter扩展pageradapter{

private Context context;
private List<T> onBoardingList;

public OnBoardingAdapter(Context context, List<T> list) {
    this.context = context;
    this.onBoardingList = list;
}

@Override
public int getCount() {
    return this.onBoardingList.size();
}

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
    return view.getClass() == object.getClass();
}

@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
    container.removeView((View) object);
}

@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
    View view = LayoutInflater.from(context).inflate(R.layout.onboarding_screen_view, null);

    container.addView(view);

    return view;
}

}
我的xml文件到内容查看器:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">

<androidx.viewpager.widget.ViewPager
    android:id="@+id/_screenPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

我的每页xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="onboarding_screen_view" />

在主活动文件中,我调用它来显示我的模块:

<com.domaine.onboarding.OnBoardingView
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
k10s72fa

k10s72fa1#

尝试返回视图而不是容器
如果你想做到这一点容易尝试使用 viewpager2 ,您可以使用与 recyclerview 适配器
https://developer.android.com/training/animation/vp2-migration

相关问题