Articles of android viewpager

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>

使用工具栏与片段

我正在尝试创build一个viewpager,通过3个不同的片段,每个都有不同的工具栏。 我已经在一个活动之前实现了新的工具栏,并得到它的工作,但我试图让它与碎片工作 这是片段代码 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout resource that'll be returned View rootView = inflater.inflate(R.layout.fragment_home, container, false); mToolbar = (Toolbar) rootView.findViewById(R.id.toolbar_home); if (mToolbar != null) { setSupportActionBar(mToolbar); } mToolbar.setTitle(null); return rootView; } 我用Fragment扩展我的片段,但是我得到错误 Cannot resolve method setSupportActionBar 我不知道如何解决这个问题,如果我删除setSupportActionBar代码将停止使用某些设备? 谢谢

ViewPager屏幕外的页面限制

有没有办法绕过ViewPager的正常行为及其屏幕外页限制 ? 我的ViewPager包含四个fragments ,每个fragments包含图像的ViewPager 。 我遇到的问题是在ViewPager的ViewPager ,创build了两个fragments ,这导致大约20个图像(每个片段大约10个)被同时下载/抓取。 是否可以禁用屏幕外页面限制? 我的目标是仅在selectfragment时才下载图像,或者仅在用户hover图像时下载图像。 一种方法是使用onPageSelected侦听器并设置一个标志,告诉GridViewAdapter是否允许下载图像。 我能想到的另一种HoverListener是在ImageView上设置一个HoverListener ,并只在onHover上下载图像,但是这个监听器只能在4.0及更高版本中使用。 有没有更好的方法来实现这一目标?

在恢复活动时刷新FragmentStatePagerAdapter上的图像

我创build了一个使用FragmentStatePagerAdapter来提供小型图库的活动。 但是,当活动恢复后(例如,从其他活动回来后),我无法恢复它。 每次前两张照片都是空白的,只有当我把两张照片刷到一边后,才会刷新。 我没有find工作的答案(尤其是重写getItemPosition() ) 我这样设置: mPagerAdapter = new PhotosPagerAdapter(getSupportFragmentManager()); mPager = (ViewPager) findViewById(R.id.photosViewPager); mPager.setAdapter(mPagerAdapter); 然后我有FragmentStatePagerAdapter类: private class PhotosPagerAdapter extends FragmentStatePagerAdapter{ public PhotosPagerAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return photos.size(); } @Override public Fragment getItem(int position) { ImageFragment f = new ImageFragment(position); return f; } @Override public int getItemPosition(Object object) { […]

ViewPager活动通知一个特定事件的片段

我有一个ViewPager ,它使用FragmentAdapter为了显示同一种类的几个片段。 虽然这些碎片基本上是从同一个类实例化的,但它们使用ListView来显示不同的信息。 (很明显, ListView被一个ArrayAdapter压缩。) 后台服务也在运行,并不断从互联网接收数据。 当我的后台服务通知我一个特定的事件时,我希望能够更新ViewPager的特定片段。 我怎样才能做到这一点? 一个代码片段将非常感激! (顺便说一下,我看到了类似的问题,但我不知道如何使用他们的build议!) 为了使它更简单:我的活动与ViewPager: [Fragment 0] [Fragment 1] [Fragment 2] 后台服务告诉我(通过广播)更新片段1中的ListView 。 编辑:这里是示例代码: public class ChatWindowPager extends FragmentActivity { private ViewPager mViewPager = null; private ChatFragmentAdapter mAdapter = null; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.chat_window_pager); this.mViewPager = (ViewPager) findViewById(R.id.chatPager); this.mAdapter = new ChatFragmentAdapter(getSupportFragmentManager()); this.mViewPager.setAdapter(this.mAdapter); . […]

将图标添加到SlidingTabLayout而不是文本

我在我的Android应用程序中实现SlidingTabLayout。 我的查询是,我想在我的滑动选项卡中实现图标,而不是导航文本。 我在网上search了很多这样的教程或样本,但没有find。 我也search了一个以前的问题上的stackoverflow: 在这里 – SlidingTabLayout与图标 。 这是有点信息,但没有真正帮助我。 要清楚。 我需要我的标签只包含图标 。 没有文字。 由于我是这个整体设置的新手,我很感激,如果你将正确的代码与解释。 感谢您的时间和精力! PS 我也听说过安德烈亚斯·斯图茨(Andreaz Stuetz)的翻页贴,想知道这是否会更适合我要去的东西的types… 另外:这是我想我的滑动标签看起来像。 看看这个图像的顶部。 编辑:现在,LOLLIPOP(与材料devise)已经出来。 我在使用工具栏(ANDROID 5.0 ACTION-BAR)之后,使用了一个新的“唯一图标” SLIDING-TAB-LAYOUT看到了许多应用程序。 是否有任何新的方式来执行这个? 再次感谢!

ViewPager PagerObserver未注册

我的应用程序closures时,我closures我的屏幕,并重新打开。 Logcat告诉我,这个错误的原因是指向我的CourseFragment.class中的Java行60,它扩展了Fragment。 mViewPager.setAdapter(infoTechPageAdapter); 我在我的CourseFragment.class中实现了一个ViewPager,它扩展了Fragment。 这是我的代码: public class CourseFragment extends Fragment { public static final String ARG_POSITION_NUMBER = "course_number"; private int position; public CourseFragment() { // Empty constructor required for fragment subclasses } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView; position = getArguments().getInt("position"); String course = getResources().getStringArray( R.array.array_navigation_drawer)[position]; getActivity().setTitle(course); rootView = […]

设置当前项目/页面时,Android ViewPager抛出IndexOutOfBoundsexception

我有一个ViewPager有三个项目。 我试图设置ViewPager查看最右边的页面(这将是第二个元素)。 这是返回一个IndexOutOfBoundsexception,但我知道索引应该是在边界。 这里是确切的堆栈: 02-22 12:22:50.256: E/AndroidRuntime(384): FATAL EXCEPTION: main 02-22 12:22:50.256: E/AndroidRuntime(384): java.lang.IndexOutOfBoundsException: index=1 count=0 02-22 12:22:50.256: E/AndroidRuntime(384): at android.view.ViewGroup.addInArray(ViewGroup.java:2050) 02-22 12:22:50.256: E/AndroidRuntime(384): at android.view.ViewGroup.addViewInner(ViewGroup.java:1994) 02-22 12:22:50.256: E/AndroidRuntime(384): at android.view.ViewGroup.addViewInLayout(ViewGroup.java:1958) 02-22 12:22:50.256: E/AndroidRuntime(384): at android.view.ViewGroup.addViewInLayout(ViewGroup.java:1939) 02-22 12:22:50.256: E/AndroidRuntime(384): at android.support.v4.view.ViewPager.addView(ViewPager.java:917) 02-22 12:22:50.256: E/AndroidRuntime(384): at android.view.ViewGroup.addView(ViewGroup.java:1828) 02-22 12:22:50.256: E/AndroidRuntime(384): at us.tagverse.pagertest.MasterActivity$PAdapter.instantiateItem(MasterActivity.java:518) 02-22 12:22:50.256: E/AndroidRuntime(384): at […]