Articles of android viewpager

Android:哪个更好,viewpager,gallery,水平滚动视图……还是?

我有一个片段,并希望添加一个库,但我看到该画廊已被弃用….. 更具体地说,我实际上想要一个水平列表视图,因为我想自定义视图(在每行中包含图像和文本)并允许它是srcollable。 此外,“行”的数量(如果水平它的列然后….)随数据库而变化,所以它不是静态的,我不想限制“行”的数量 谷歌帮助我find了一些解决方案:viewpager和其他附加库 但哪一个更好? 我希望将来我不需要一直修复代码! 谢谢!!!!

Viewpager背景颜色通过第一页渗透

我在片段中有一个viewpager,表现出以下行为。 页面2向前显示正确,但第一页显示为好像它位于容器视图的背景后面 – 好像它的z-index低于背景(z-indices向用户增加) – 请参阅图片链接如下。 页面实例化的代码是: pager.setAdapter(new PagerAdapter() { @Override public void destroyItem(ViewGroup container, int position, Object item) { container.removeView((View) item); } @Override public int getCount() { return mImages.size(); } @Override public View instantiateItem(ViewGroup container, final int position) { LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); final View layout = inflater.inflate(R.layout.image_selector, null, false); final ImageView image […]

是否有可能在viewpager中将共享元素从fragment转换为ViewPager

我有一个活动A有一个片段包含项目列表,该项目包含ImageView 当我单击项目时,我启动包含ViewPager片段的Activity B,在每个片段中有一个ViewPager包含Images我想要做的是在项目列表中的第一个ImageView和第一个图像之间进行共享元素转换显示在图像的viewpager中

视图寻呼机片段中的子片段在交换后消失

所以这是一个复杂的问题,但我会尽量让它变得容易。 首先,我有一个带有视图寻呼机的主要活动。 其中有2个页面,每个页面都有2个操作栏标签。 我还有一个抽屉有4个选项,前2个是视图寻呼机中的2个页面,第二个2是不是的页面。 如果您选择第二个中的一个,我将ViewPager配置为将其他2个片段换出。 所有这些片段都是单例,因此来回切换不会导致任何内存问题。 切换到第二组片段时,其中一个片段中有一个框架,用于在选择按钮时交换子片段。 这就是问题所在。 在该片段第一次加载后,它工作正常。 但是如果你使用抽屉切换到第一组,然后再次回到第二组,子片段就会消失。 在那之后你做任何其他事情后,它往往会崩溃。 这是它的崩溃日志 01-10 15:55:05.272: E/MessageQueue-JNI(21034): java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.support.v4.app.FragmentManagerImpl.performPendingDeferredStart(android.support.v4.app.Fragment)’ on a null object reference 如果我在代码中玩一下,我会得到类似的东西。 这两个错误是我似乎产生的最多错误: 01-10 16:00:13.072: E/AndroidRuntime(22227): java.lang.NullPointerException: Attempt to invoke virtual method ‘java.lang.ClassLoader android.support.v4.app.FragmentActivity.getClassLoader()’ on a null object reference 我可以继续在框架视图上调用replace(),因此它不会消失。 所以我猜这不是问题。 它 这是一些相关的代码。 片段的代码: public View onCreateView(LayoutInflater inflater, […]

重新加载中间片段时,Android FragmentStatePagerAdapter返回空白屏幕

我正在尝试使用FragmentStatePagerAdapter和ViewPager创建一个包含4个选项卡的应用程序。 当我第一次运行应用程序,如果我按顺序选择选项卡(0到3)一切顺利,然后如果我尝试执行回来的方式(3到0)选项卡1显示一个空白屏幕,如果,在那之后,我选择选项卡2,然后也是空白,如果我转到选项卡0并再次执行选项卡2恢复生命,有时选项卡1返回生活但我没有find任何序列… 我知道这是一团糟…事情是标签1使用失败,标签2失败一些,标签0和3总是工作正常。 如果我交换片段的位置一切都是一样的,我认为有些与片段代码无关…… logcat中没有显示错误,调试碎片显示一切都按照应该的方式进行… 我已经有几天试图修复它没有运气(很明显……),我试图覆盖getItemPosition()以返回POSITION_NONE,我试图让我自己的FragmentStatePagerAdapter像这里说http:// speakman .net.nz / blog / 2014/02/20 / a-bug-in-and-a-fix-for-way-fragmentstatepageradapter-handles-fragment-restoration / but nothing …还有一些东西可以避开对我有用。 一些代码: 主类 public class Main extends FragmentActivity implements ActionBar.TabListener { private MyPageAdapter mPagerAdapter; private ViewPager mPager; @Override protected void onCreate(Bundle si) { super.onCreate(si); setContentView(R.layout.activity_main); init(); } private void init() { final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); if […]

使用ViewPager在多个TextViews / Fragments中拆分文本

我正在尝试使用Android兼容性库将多个片段中的一些文本拆分到ViewPager中。 我们的想法是拥有类似于Kindle应用程序的东西,您可以在其中翻阅多页文本。 最初,我的文本源是strings.xml中定义的字符串,我使用算法来确定设备屏幕的高度,然后将此字符串相应地拆分为ViewPager的多个项目。 由于你无法提前获得TextView的高度,我只是使用百分比值来确定在每个页面上设置TextView的最大大小(这看起来有点难看)。 这看起来像是一种合理的方法,还是我会以错误的方式解决这个问题?

退出转换不适用于片段中ViewPager中的ImageView共享元素

在我的应用程序中,我有一个Activity启动另一个带有Fragment的Activity,其中包含一个ViewPager图像。 我目前工作的是输入转换,其中第一个Activity启动第二个,转换是正确的。 这是有效的,因为在我的ViewPager中我放了一个OnPreDrawListener ,只在加载了寻呼机中的图像时才恢复活动转换。 它看起来像这样: public class ImagePagerAdapter extends PagerAdapter { // Constructor and other things.. @Override public Object instantiateItem(ViewGroup container, final int position) { ImageView imageView; if (position == 0) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // Shared element is the first one. ViewCompat.setTransitionName(imageView, “sharedImage”); } } imageView = new ImageView(activity); // Just a […]

Android ViewPager手动调用PageTransformer transformPage

我有一个带有PageTransformer实现的ViewPager,它为ViewPager的下一页做了一些时髦的东西。 我的实现看起来像这样: class ZoomOutPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.85f; private static final float MIN_ALPHA = 0.5f; @Override public void transformPage(View view, float position) { int pageWidth = view.getWidth(); if (position < -1) { // [-Infinity,-1) // This page is way off-screen to the left. view.setAlpha(0); } else if (position <= […]

Android – 根据每个viewpager recyclelerview激活appbar滚动

我有一个ViewPager,其中包含2个包含Recyclerview的选项卡。 我正在使用支持库22.2.0(AppCompat,Recycler view …)。 我的viewpager xml最初是: 我想激活/停用appbar在每个tab / recyclerview的基础上滚动而不是整个viewpager,也就是说,一个tab / recyclerview将使appbar滚动而另一个tab / recyclerview不会。 这个问题是当我删除 app:layout_behavior=”@string/appbar_scrolling_view_behavior” 从viewpager,一个默认的layout_behavior应用于viewpager,它仍然激活tab / recyclerview上的appbar滚动。 我的策略是在viewpager中停用appbar滚动,可能是这样的: 并仅在我的第一个标签/ recyclerview上激活它。 喜欢这个 : <android.support.v7.widget.RecyclerView … android:id="@+id/playlist1_rv" app:layout_behavior="@string/appbar_scrolling_view_behavior" 但我需要一个“@ string / appbar_desactivated_behavior”的课程。 它存在吗? 不是,怎么写呢? 或者您考虑另一种策略? 提前致谢。

当方向改变时,ViewPager内部的碎片消失

我已经阅读了几篇关于此的post( http://tinyurl.com/pb8es74,http://tinyurl.com/p9pcfcv .. ),但无法find解决方案。 我有一个MainActivity,它加载一个包含ViewPager的布局,其中包含三个片段(根据方向有不同的布局)。 我已将此function添加到活动中,因此当方向更改时它不会被销毁,因为我可能会打开一些对话框或popup窗口: android:configChanges=”keyboardHidden|orientation|screenSize|screenLayout|uiMode” 因此,我已经覆盖了方法“onConfigurationChanged”,它只调用方法loadLayout,其中有关视图的所有内容: private void loadLayout() { setContentView(R.layout.layout_main_activity); pager = (ViewPager) this.findViewById(R.id.pager); pager.setPageTransformer(true, new DepthPageTransformer()); adapter = new MyFragmentPagerAdapter(getSupportFragmentManager()); adapter.addFragment(Fragment1.getInstance()); adapter.addFragment(Fragment2.getInstance()); adapter.addFragment(Fragment3.getInstance()); pager.setAdapter(adapter); pager.setOffscreenPageLimit(2); //Media controllers imgMediaController= (ImageButton) findViewById(R.id.media_controller); imgMediaController.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { […] } }); imgVolumeController= (ImageButton) findViewById(R.id.volume_controller); gM.setImgVolumeController(imgVolumeController); imgVolumeController.setOnClickListener(new View.OnClickListener() { public void onClick(View […]