Articles of android viewpager

Viewpager在RecyclerView行内不显示

我想做一个“照片细节”活动或片段,我在上面和下面显示照片aViewpPager,显示相关照片(2选项卡)的评论和喜欢的照片。 为了使屏幕“滚动”,所以我可以向上/向下滚动的评论和喜欢和左/右滑动我决定使用2行的RecyclerView: 行1:照片(ImageView)。 行2:SlidingTabLayout + ViewPager + FragmentPagerAdapter。 代码编译并运行,显示图像和slidingTabLayout而不是ViewPager。 所以我的两个主要问题是: 1-我的实现有什么问题 2-是否有一个替代或更好的解决scheme,我想实现? 注意:我不想使用带有header的listView。我想使用RecyclerView,因为从networking上添加顶部/底部元素更容易。 PhotoDetailsActivity.java public class MainActivity extends ActionBarActivity { RecyclerView recyclerViewPhotoDetails; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.recyclerViewPhotoDetails = (RecyclerView) this.findViewById(R.id.recycler_view_photo_details); this.recyclerViewPhotoDetails.setLayoutManager(new LinearLayoutManager(this)); this.recyclerViewPhotoDetails.setAdapter(new PhotoDetailsRecyclerAdapter(this.getSupportFragmentManager())); } } PhotosDetailsRecyclerAdapter.java public class PhotoDetailsRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int ROW_IMAGE = 0; private […]

Android PagerAdapter,获取当前位置

我想获得我的PagerAdapter的可见视图的当前位置 我没有看到像getPosition()这样明显的function,我想要一个。 我想在这个位置添加一个对象到它的数组列表中,但是我需要先知道它

RecyclerView项目不会更改

我有一个在TabLayout中重复的片段中的RecyclerView。 我有在RecyclerView中的视图不变的问题。 每个标签上都有一个微调框。 我想在select微调项目时更改数据。 我的情况: 当切换标签 – 项目改变 当在第一个选项卡中的微调器中select另一个值 – 项目没有改变 。 (但是数据在适配器类中是变化的,也就是说,首先在select过程中不是null,那么就是null,但是第一个没有空的数据不会出现,用null代替,用断点find)。 注意:在这种情况下,切换选项卡时,项目会变成前一选项卡中的微调选框选项。 然后它消失并在选项卡中显示当前项目。 当在最后一个选项卡中的微调框中select另一个值 – 项目更改 。 我的浏览器适配器类 public class StudentViewPagerAdapter extends FragmentStatePagerAdapter { private final List<StudentList> mFragmentList = new ArrayList<>(); private final List<Clazz> mFragmentTitleList = new ArrayList<>(); public StudentViewPagerAdapter(FragmentManager fm) { super(fm); } public void addFragment(StudentList fragment,Clazz clazz){ mFragmentList.add(fragment); mFragmentTitleList.add(clazz); } @Override […]

FragmentManager IllegalStateException:没有主机

更新 :当我把nullcheks(片段!= null,getActivity()!= null)崩溃了,无论我能。 我的应用程序正在使用ViewPager (屏幕外限制5)与FragmentStatePagerAdapter与getSupportFragmentManager()初始化。 每个页面都有它自己的碎片和后台堆栈。 应用程序在启动时崩溃。 问题只出现在preLollipop设备和模拟器上。 使用最新的支持lbrary(也尝试24.0.0 – 相同的结果)Stacktrace: java.lang.IllegalStateException:android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1273)在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1268)android.support上没有主机.v4.app.FragmentManagerImpl.dispatchCreate(FragmentManager.java:2138)at android.support.v4.app.Fragment.onCreate(Fragment.java:1254)at android.support.v4.app.Fragment.performCreate(Fragment.java :2062)at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1051)at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1286)at android.support.v4.app。 BackStackRecord.run(BackStackRecord.java:758)at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1632)at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:637)at android在android.support.v4.view.ViewPager.pop上的.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166) ulate(ViewPager.java:1237)在android.support.v4.view.ViewPager.populate(ViewPager.java:1085)在android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1611)在android.view .View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)at android.widget.LinearLayout.measureVertical( LinearLayout.java:695)在android.view.View.measure(View.java:16497)android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)android.widget.LinearLayout.onMeasure(LinearLayout.java:588) )android.widget.FrameLayout.onMeasure(FrameLayout.java:310)在android.widget android.widget.RelativeLayout.measureChildHorizo​​ntal(RelativeLayout.java:719)android.view.View.measure(View.java:16497) .RelativeLayout.onMeasure(RelativeLayout.java:455)at android.view.View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widge t.FrameLayout.onMeasure(FrameLayout.java:310)at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)at android.view.View.measure(View.java:16497)at android.view .ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)at android.view.View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins( (ViewGroup.java:5125)在android.view.View.measure(View.java:16497)android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)android.widget.FrameLayout.onMeasure(FrameLayout.java:310) )在android.widget.Lineout.measureChildChildChildChildChildChildChildVertical(LinearLayout.java:695)在android.widget.LinearLayout.onMeasure(LinearLayout.java:588)在android.view上的(LinearLayout.java:1404)在android.widget.LinearLayout.measureVertical .View.measure(View.java:16497)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 在android.view.View.measure(View.java:16497)在android.view.ViewRootImpl.performMeasure(ViewRootImpl.java)com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2291) :1912)at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1109)at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1291)at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:996)at […]

如何禁用ViewPager向一个方向滑动

我想只允许用户在一个ViewPager从右向左滑动。 所以一旦他通过一页,他不能回到它。 如何才能做到这一点? 我试过这个解决scheme: public class CustomViewPager extends ViewPager { float lastX = 0; boolean lockScroll = false; public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public CustomViewPager(Context context) { super(context); } @Override public boolean onTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: lastX = ev.getX(); lockScroll = false; return super.onTouchEvent(ev); case MotionEvent.ACTION_MOVE: if […]

有没有一种方法来禁用viewPager滚动到边缘的褪色?

可滚动视图(如ListView)沿着没有内容的边缘呈现淡蓝色效果,并滚动到结尾。 我怎样才能closures效果? 在列表视图我可以使用: setHorizontalFadingEdgeEnabled(false); android:fadingEdge="none" android:requiresFadingEdge="none" 但是在viewPager中没有用处,可以给我一些build议

Android的webview:防止触摸手势传递给父视图

我有一个包含许多子视图的viewpager; 每个子视图都是一个web视图。 每个webview都有一些用户可以与之交互的HTML对象; 例如,可以在滑动手势上工作的幻灯片或用户可以在HTMLcanvas上移动的可拖动的圆圈。 问题是当用户在这些HTML对象上执行一个手势时,viewpager会滚动到下一个视图。 当用户与它们交互时,我希望HTML对象能够工作(viewpager不滚动),当用户在其他地方滑动时viewpager会滚动。 我怎样才能做到这一点? PS我已经在HTML幻灯片的JavaScript中使用event.preventDefault()和event.stopPropagation() ,希望webview不会将触摸事件传递给父视图。

Android导航栏覆盖viewpager内容

我无法阻止系统导航栏遮住我的内容! 我滚动到回收站的最底部,但隐藏在导航栏后面。 这是我的XML布局。 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/root" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <include layout="@layout/toolbar"/> <android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:fitsSystemWindows="true" android:id="@+id/viewpager" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior" /> <com.melnykov.fab.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|right" android:layout_margin="16dp" app:fab_colorNormal="@color/accent" app:fab_colorPressed="@color/accent_dark" /> 这是您在图片中看到的碎片布局。 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="8dp"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical"/> </FrameLayout> 我试图添加android:fitsSystemWindows =“true”到每一个布局我可以但没有工作。 其他线程提到添加从栏计算的边际,但这似乎不是正确的解决scheme。 […]

Android – 使用FragmentActivity + Loader来更新FragmentStatePagerAdapter的问题

我试图使用ViewPager的Fragments显示Fragmentsdynamic列表。 有很多关于如何做静态版本的例子。 我的问题是我显示的列表需要dynamic加载,也可以根据用户input(添加/删除)进行更改。 我试图使用自定义的android.support.v4.content.Loader来加载我可以用来build立我的列表的数据集。 在我的设置中一切正常,直到我想要更新适配器,并在此时执行FragmentStatePagerAdapter#notifyDataSetChanged()调用此代码执行(从FragmentStatePagerAdapter ) public void finishUpdate(View container) { if(mCurTransaction != null) { mCurTransaction.commit(); // BANG!!! The exception is thrown mCurTransaction = null; mFragmentManager.executePendingTransactions(); } } 事务提交失败并显示以下消息: java.lang.IllegalStateException: Can not perform this action inside of onLoadFinished 因为在FragmentManagerImpl这个代码被执行: private void checkStateLoss() { if (mStateSaved) { throw new IllegalStateException( "Can not perform this action after […]

在viewpager页面中使用mapview的手势问题

我的应用程序的主界面是一个viewpager,用户只是水平滑动页面到各个页面。 其中一个网页有谷歌地图查看(粘贴在下面)。 我的问题是,如果用户在地图页面上,并使用水平滑动手势,页面滑动到下一页,而不是地图侧面移动。 就好像viewpager正在获取地图前的手势。 如果用户很聪明并开始在对angular线或垂直方向上滑动地图,则地图开始移动,然后手势可以水平地继续。 但我宁愿地图移动,而不是简单的水平滑动手势的页面。 该页面始终可以使用textview滑动。 有什么办法可以做到这一点? 谢谢,加里 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ContentPanel" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tvMAP" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Map" style="@style/bigtype" /> <com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:apiKey="mykeygoeshere" android:clickable="true" /> </LinearLayout>