Articles of android viewpager

Android ViewPager不能调用onDetach / onDestroy / onDestroyView在容器中进行replace

我有一个FrameLayout容器,在其中我使用replace方法来放置一个片段,当从导航抽屉select一个项目。 getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment, fragment.getFragmentTag()).commit(); 我有一个其中有一个ViewPager的片段。 我有3个片段与ViewPager显示在一个选项卡布局。 当我从导航抽屉中select另一个项目时,带有ViewPager的片段将被replace,但片段内的片段不会被分离。 系统仅使用ViewPager onDetach / onDestroy等方法调用片段,而不调用其包含的片段的方法。 我正在使用FragmentPagerAdapter,我尝试使用FragmentStatePager适配器。 没有什么变化。 我正在使用默认的setOffscreenPageLimit(1); 我怎样才能得到我的ViewPager片段方法onDetach / onDestroy调用? 谢谢!

使用ViewPager实现像iOS应用程序一样closures垂直滑动即可closures的function

我目前有ViewPager水平排列的视图,并可以循环他们与PagerAdapter。 目前,为了执行我想要刷卡的操作,我必须在视图的页面上双击。 我可以发布代码,但是提取必要的作品有些困难… 我想要的是在这些视图上垂直滑动的能力,让它们通过轻扫和淡出垂直翻译,然后在距离设备边缘一定距离时执行一个动作。 要了解我在想什么,在“图库”应用程序中,您可以捏合打开的照片以缩小并打开水平幻灯片视图。 从那里你可以向上(或向下)的照片/video删除它。 对于那些没有相同的图库应用程序,这就像在iOS上closures应用程序。 我已经尝试扫描图库应用程序的源代码,但没有find正确的活动运气。

BottomSheetDialogFragment中的ViewPager

我试图在BottomSheetDialogFragment中设置一个viewpager,但总是有相同的结果: java.lang.IllegalStateException:Fragment没有视图 setupDialog 码: @Override public void setupDialog(Dialog dialog, int style) { Log.d(TAG, "setupDialog"); super.setupDialog(dialog, style); View root = View.inflate(getContext(), R.layout.fragment_daily_detail, null); dialog.setContentView(root); CoordinatorLayout.LayoutParams layoutParams = (CoordinatorLayout.LayoutParams) ((View) root.getParent()).getLayoutParams(); CoordinatorLayout.Behavior behavior = layoutParams.getBehavior(); if (behavior != null && behavior instanceof BottomSheetBehavior) { bottomSheetBehavior = (BottomSheetBehavior) behavior; bottomSheetBehavior.setBottomSheetCallback(mBottomSheetBehaviorCallback); bottomSheetBehavior.setPeekHeight((int) getResources().getDimension(R.dimen.fragment_forgot_password_min_height)); Log.d(TAG, "State: " + bottomSheetBehavior.getState()); imageClose […]

片段中的ViewPager在返回时丢失内容

我正在实施tabhost使用FragmentActivity ,在第一个选项卡下我加载一个包含一个CirclePageIndIcator和CirclePageIndIcator的欢迎片段,我需要加载4个视图在CirclePageIndIcator 这是我的WelcomeFragment public class WelcomeFragment extends Fragment { PageAdapter mAdapter; ViewPager mPager; CirclePageIndicator mIndicator; List<Fragment> fragments; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag_welcome_layout,null); mPager=(ViewPager)view.findViewById(R.id.myViewPager); mIndicator=(CirclePageIndicator)view.findViewById(R.id.circlePageIndicator1); fragments=new ArrayList<Fragment>(); return view; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Fragment fragment; for(int i=0;i<4;i++) { fragment= Fragment.instantiate(getActivity(), TipsFragment.class.getName()); fragments.add(fragment); } […]

ViewPager – 并不总是调用onCreateView

我有一个10页的ViewPager。 当我启动最后(第10)页onCreateView()我的片段的方法被调用。 当我滑动到第9页onCreateView()也被调用。 但是当我回到第十页onCreateView()没有被调用。 怎么了?

Android ViewPager维度

ViewPager必须是活动布局中唯一存在的对象吗? 我试图执行这样的事情: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/reader_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/page_viewer" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Gallery android:id="@+id/miniatures_gallery" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout> 在哪里应该有一个大的传呼机在顶部滚动(我有它)和一个较小的画廊滚动下。 这显示了我只有寻呼机,而不是画廊。 任何build议?

在ViewPager中devise一个Horizo​​ntalScrollView或者使用fragment:

我需要devise下面的屏幕,我需要你的build议: 说明: 标题是静态的/固定的,我不需要做任何事情。 黄色:这是一个有趣的部分,我需要devise一个ViewPager类似的屏幕,可以向左/向右滚动最大4个屏幕。 红色:在每个屏幕上,我需要添加一个表格/网格,如果不适合屏幕尺寸,也可以滚动。 绿色:可以使用屏幕底部的绿色button或通过滚动ViewPager来完成页面切换。 问题是:这种行为可以使用ViewPager实现,还是应该使用Fragments ? 如果片段是要走的路,那么我将如何使用滑动手势来实现页面切换? 如果它是一个ViewPager然后如何添加内部滚动,以及如何使用底部的button来控制它? 任何帮助将不胜感激,谢谢。

显示空白列表项目的ListView中的ViewPagers

[编辑] :谢谢所有有意义的答案,现在问题解决了,谢谢你的帮助。 类似的问题: Android:我无法使用ViewPager WRAP_CONTENT 我试图实现我的应用程序的用户界面:我想在每一行ViewPager的ListView 。 这是我的文件: MainActivity.java package com.condi; import android.app.ListActivity; import android.os.Bundle; import android.view.Menu; public class MainActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setListAdapter(new CardListAdapter(this, getFragmentManager())); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } } CardListAdapter.java package com.condi; import java.util.List; import android.app.FragmentManager; import […]

Actionbar Sherlock – 滑动时,标签在横向上不会改变

我有一个使用ViewPager +操作栏Sherlock标签的屏幕。 我有一个setOnPageChangeListener设置在寻呼机上,它执行以下操作: @Override public void onPageSelected(final int position) { actionBar.setSelectedNavigationItem(position); } 这在纵向模式,甚至在横向工作得很好,如果我只有less数标签和所有标签显示。 但是,如果我在横向添加更多的选项卡,这些折叠到一个下拉小部件。 当我浏览ViewPager时,会执行setSelectedNavigationItem方法,但现在它对下拉select没有任何影响:它停留在最后选定的值上。 这是非常糟糕的,因为用户缺less一个视觉线索:标签可能会说“一”,但用户已经在页面#6。 有没有办法以编程方式更改基于位置显示哪个选项卡? PS我知道为什么会发生这种情况:这是从com.android.internal.app.ActionBarImpl代码: public void setSelectedNavigationItem(int position) { switch (mActionView.getNavigationMode()) { case NAVIGATION_MODE_TABS: selectTab(mTabs.get(position)); break; case NAVIGATION_MODE_LIST: mActionView.setDropdownSelectedPosition(position); break; default: throw new IllegalStateException( "setSelectedNavigationIndex not valid for current navigation mode"); } } 而当我一步一步,我可以看到,导航模式仍然NAVIGATION_MODE_TABS虽然标签显示为列表。 现在 – 我的膝盖混乱的反应是把代码放到onConfigurationChanged设置适当的导航模式,但不应该这样的自动发生? PPS现在已经有一个包含该补丁的Android bug了

InfiniteViewPager冻结setCurrentItem()方法

我正在使用此代码来创buildInfiniteViewPager: pAdapter = new InfinitePagerAdapter(new MyPagerAdapter()); InfinitivePAdapter = (InfiniteViewPager) findViewById(R.id.pager); InfinitivePAdapter.setAdapter(pAdapter); 似乎有setCurrentItem()函数有问题。 当我尝试调用setCurrentItem()函数时程序冻结,但不是每次。 程序只在以下情况下冻结:setCurrentItem()的项目较低,并从不同的方法调用(在我的情况下,从onClickListener)。 InfinitivePAdapter.setCurrentItem(7);//item is set on 7 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { InfinitivePAdapter.setCurrentItem(5);//when button is pressed it is set to 5 } }); 然而,程序似乎正常工作时:项目大于上一个: InfinitivePAdapter.setCurrentItem(3);//item is set on 3 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { InfinitivePAdapter.setCurrentItem(12);//when […]