gpt4 book ai didi

android - 带有支持库 v13 的 ViewPager PageTransformer

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:12 25 4
gpt4 key购买 nike

我的应用程序使用 Android 的 ViewPager 和 FragmentStatePagerAdapter,它只需要支持 Android 4.x 或更高版本。我正在使用 ViewPager 的 v13 支持库,所以我不需要处理 SupportFragments,我只需要使用 Android.app.Fragment。一切都按预期工作,但现在我试图将 PageTransformer 添加到我的 ViewPager,但我遇到了问题。

ViewPager.setPageTransformer(bool, PageTransformer) 不被识别为方法,并且 PageTransformer 不被识别为类(我尝试了很多组合进口无济于事)。使用 v4 支持库,ViewPager.setPageTransformer 是一种方法,但是如果我使用支持库 v4,我必须使用 SupportFragments,我认为这是不必要的,因为我支持的 Android 版本。

问题:支持 v13 库的 ViewPager 是否支持 PageTransformers?使用原生 Fragments 比 SupportFragments 有什么好处,还是我应该只使用支持库 v4?

编辑:我正在添加文件的导入和演示我的问题的相关代码

import java.lang.reflect.Field;
import android.app.Fragment;
import android.app.FragmentManager;
import android.support.v13.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

在我的类中(它不扩展任何东西),我试图在这个方法中设置页面转换器:

public View createView(LayoutInflater inflater, ViewGroup container) {
// Inflate the layout containing a title and body text.
ViewGroup rootView = (ViewGroup) inflater
.inflate(R.layout.carousel_fragment, container, false);


mContainer = (PagerContainer) rootView.findViewById(R.id.pager_container);
//PagerContainer makes it easy to display more than one page from the ViewPager
//on screen at once
mPager = mContainer.getViewPager();


mAdapter = new MyPagerAdapter(MainActivity.getActivity().getFragmentManager());
mPager.setAdapter(mAdapter);

mPager.setOffscreenPageLimit(2);
mPager.setPageMargin(10);
mPager.setClipChildren(false);
mPager.setCurrentItem(mPager.getAdapter().getCount()/2, false);

mPager.setPageTransformer(false, new PageTransformer(){
@Override
public void transformPage(View page, float position) {
// do something that isn't default behavior
}
});

Field mScroller;
try {
mScroller = ViewPager.class.getDeclaredField("mScroller");

mScroller.setAccessible(true);
CustomScroller scroller = new CustomScroller(MainActivity.getContext());

mScroller.set(mPager, scroller);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}

return rootView;
}

我遇到的具体错误是 cannot find symbol: PageTransformersetPageTransformer 方法也有类似的错误。我的项目有 android-support-v13.jar 但没有 v4.jar,因为当我同时包含它们时出现 DEX 错误。

我可能在做一些愚蠢的事情,但我还是想不通。感谢您提供的任何帮助。

最佳答案

我刚刚尝试使用 v13 支持库,没有发现任何问题:

mPager.setPageTransformer(false, new PageTransformer() {

@Override
public void transformPage(View page, float position) {
// TODO Auto-generated method stub

}
});

实际上,v4 jar 中的 ViewPager 与 v13 jar 中的完全相同。此外,PageTransformer 根本不依赖于 Fragment。你能提供一些代码吗?

编辑:

您缺少导入:

import android.support.v4.view.ViewPager.PageTransformer;

你们类有吗?请确保您的匿名 PageTransformer 实际实现了 android.support.v4.view.ViewPager.PageTransformer 而不是其他东西。

关于android - 带有支持库 v13 的 ViewPager PageTransformer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com