Articles of android viewpager

在viewpager页面中mapview的手势问题

我的应用程序的主界面是一个viewpager,用户只需水平滑动页面即可访问各个页面。 其中一个页面有一个谷歌mapview(粘贴在下面)。 我的问题是,如果用户在地图页面上并使用水平滑动手势,页面将滑动到下一页而不是横向移动的地图。 就好像viewpager在地图之前获取手势一样。 如果用户很聪明并开始沿对角线或垂直方向滑动地图,则地图开始移动,然后手势可以水平继续。 但我更喜欢在简单的水平滑动手势上移动地图而不是页面。 可以使用textview始终滑动页面。 有什么方法可以让这件事发生吗? 谢谢,加里

onResume后,Android ViewPager setCurrentItem无法正常工作

我有这个奇怪的问题,ViewPager的setCurrentItem(position,false)工作得很好,然后我切换到另一个活动,并且在我回到第一个活动后,ViewPager总是在第一个项目上结束。 即使我已将setCurrentItem添加到onResume方法,它仍然会忽略它。 当我试图将项目设置为越界索引时,它甚至没有抛出任何exception。 虽然稍后当我调用此方法时,单击按钮“next”时,它会按预期工作。 检查我的代码10次,以获得对setCurrentItem(0)或smth的任何可能调用,但它根本就没有。

ViewPager onPageSelected为第一页

因此,当使用ViewPager时,onPageSelected侦听器不会被调用第一页与此相同的问题。 我有一些逻辑,为当前选定的页面填充一些更昂贵的UI元素,这在页面更改时有效,但it doesn’t work for the first page. 如果我在侦听器之后设置当前项,则会为第一页触发回调,但视图尚未初始化,因此我无法操作它: // Inside PagerAdapter.instantiateItem ViewHolder vh = new ViewHolder(); cursor.moveToPosition(position); vh.view = adapter.newView(context, cursor, null); // Set position as tag so we can retrieve it with findViewByTag vh.view.setTag(position); ((ViewPager) collection).addView(vh.view,0); return vh; // Inside MyActivity.onCreate pagerAdapter = new SingleMessagePagerAdapter(this, cursor); pager = (ViewPager)findViewById(R.id.message_pager); pager.setAdapter(pagerAdapter); pager.setOnPageSelectedListener(this); pager.setCurrentItem(selectedItem); // […]

允许一个片段中的旋转/横向

我的应用程序有一个Activity,其中包含一个带有四个片段的FragmentPagerAdapter(使用ViewPagerIndicator库)。 其中一个片段设计了单独的纵向和横向布局,其他三个不需要并且需要固定为纵向。 我的想法是在清单中设置android:configChanges=”orientation”并在所有片段的onResume()中调用getActivity().setRequestedScreenOrientation() ,在其中三个片段中锁定到SCREEN_ORIENTATION_PORTRAIT ,但在需要的片段中锁定到SCREEN_ORIENTATION_PORTRAIT允许旋转,但这不起作用。 该应用程序仍处于纵向模式。 有没有办法实现这个目标? 实际活动实际上并不需要旋转,如果无论如何都允许片段在没有活动的情况下改变方向,但我没有发现任何提及这是可能的。 如果活动旋转也同样可以,因为标签栏在横向时将被隐藏。

如何使用新的设计库API正确隐藏和显示操作栏?

背景 假设我在活动中有这些元素: 动作栏(实际上是工具栏) 标签(使用TabLayout) ViewPager,带有片段。 每个片段都有ListVIew / RecyclerView。 我希望与许多应用程序具有相同的行为,滚动时,操作栏将隐藏或显示。 一个完美的例子就是Play商店滚动的工作原理。 像这样的东西(但当然在片段中使用ListView): 问题 我find了“ Android-ObservableScrollView ”库,它显示了如何为许多types的滚动视图执行此操作,但它不处理新TabLayout用法的情况(加上它有问题),如新样本所示,喜欢cheesesquare 。 在设计库的新API(在“cheesesquare”示例中显示)上,它更加自动化,因此您不需要创建如此多的样板来处理滚动以及如何处理它。 像这样的东西: <android.support.v4.widget.DrawerLayout 这个雇佣小组承诺小吃店将位于FAB之下,并且动作栏将根据片段的内部RecyclerView自动生成animation(显示/隐藏)。 事实上,这似乎只适用于RecyclerView ,而不适用于ListView。 由于它们非常复杂,因此很难将它们转换为RecyclverViews。 这个问题 如何使上述机制也适用于ListViews? 有办法吗? 如果是这样,怎么样? 编辑:遗憾的是,谷歌似乎不支持ListView的这种行为,但仅适用于RecyclerView和NestedScrollView( 这里写的)。 所以我尝试使用“ Android-ObservableScrollView ”库,但它有很多滚动问题,包括出现问题。 现在我决定给Android-ParallaxHeaderViewPager 。 有谁能告诉我如何使它在当前的情况下工作? 它甚至可能吗? 编辑:毕竟我决定转换为RecyclerView。 但是,我尝试过的所有示例都显示了一个问题:当停止滚动时,动作栏(甚至可能是FAB)可以保持截断状态,而不是游戏商店,它将被animation化为隐藏/显示。 编辑:当onScrollStateChanged具有IDLE时,我似乎需要使用setExpanded。 问题是,如何决定何时扩展以及何时崩溃。

用ViewPager中的另一个片段替换片段

我正在使用ViewPager和FragmentPagerAdapter来托管三个不同的片段 [Fragment1][Fragment2][Fragment3] 我想要实现的是如果特定任务成功,用一个全新的片段Fragment4成功替换Fragment1。 我用的时候.. FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.replace(R.id.fragment1_layout_id, fragment4); transaction.commit(); ..片段被精美地替换,片段4被显示而不是片段1。 虽然只要我一直滑到Fragment3然后再回到Fragment4,Fragment1就会卷土重来。 然后,如果我使用.. FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction transaction = fragmentManager.beginTransaction(); transaction.remove(fragment1); transaction.commit(); ..Fragment1被删除,当我回来时Fragment4就在那里。 所以这个解决方案的问题是我找不到立即显示Fragment4的方法,因为Fragment1被删除了,即使我尝试过: transaction.add(fragment4); transaction.show(fragment4); 这就是我的FragmentPagerAdapter实现目前的样子, 没有任何事务管理 : public static class PagerAdapter extends FragmentPagerAdapter { public PagerAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return VIEW_COUNT; […]

Android ViewPager和TabLayout无法快速运行

有TabLayout和ViewPager嵌套片段。 每个片段里面都有listview,所以他们可以一起打电话,现在我遇到了app处理速度慢的问题。 我尝试过一些像凌空图书馆这样的解决方案,但它对我不起作用。 更多我发布我的代码所以请指导我做到最好。 MainTabFragment.java public class MainTabFragment extends Fragment { public static int position_child_tab = 0, three_childs_tab_position = 0; static int count = -1; int position_tab = 0; Bundle args; MyTabLayout myTabLayout; public MainTabFragment() { // Required empty public constructor } /** * Use this factory method to create a new instance of * […]

Android片段上的“内容视图尚未创建”

我正在使用带有viewpager设置的Android Fragments。 基本上你可以刷卡5个标签。 5个中的4个包含由MySQL表填充的ListFragments ; 这是在AsyncTask 。 当我快速滑动时,我有时会收到此错误: 09-01 07:54:01.243: E/AndroidRuntime(19706): FATAL EXCEPTION: main 09-01 07:54:01.243: E/AndroidRuntime(19706): java.lang.IllegalStateException: Content view not yet created 09-01 07:54:01.243: E/AndroidRuntime(19706): at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328) 09-01 07:54:01.243: E/AndroidRuntime(19706): at android.support.v4.app.ListFragment.getListView(ListFragment.java:222) 09-01 07:54:01.243: E/AndroidRuntime(19706): at com.—.—.MasterCat$TopFrag$TopTask.onPostExecute(MasterCat.java:570) 09-01 07:54:01.243: E/AndroidRuntime(19706): at com.—.—.MasterCat$TopFrag$TopTask.onPostExecute(MasterCat.java:1) 09-01 07:54:01.243: E/AndroidRuntime(19706): at android.os.AsyncTask.finish(AsyncTask.java:631) 09-01 07:54:01.243: E/AndroidRuntime(19706): at android.os.AsyncTask.access$600(AsyncTask.java:177) 09-01 07:54:01.243: […]

ViewPager用于通知特定事件的片段的活动

我有一个ViewPager ,它使用FragmentAdapter来显示相同​​types的几个片段。 虽然这些片段基本上是从同一个类实例化的,但它们使用ListView来显示不同的信息。 (显然ListView由ArrayAdapter包围。) 后台服务也在运行,并且不断从Internet接收数据。 我希望能够在我的后台服务通知我特定事件时更新ViewPager的特定片段。 我怎样才能做到这一点? 我们非常感谢您的代码片段! (顺便说一下,我看到了类似的问题,但我不知道如何使用他们的建议!) 更简单:我使用ViewPager进行的活动: [片段0] [片段1] [片段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); . . . } class […]

有人知道如何在Android中使用PagerTitleStrip

我决定在我的应用程序中使用ViewPager ,一切正常。 我知道我想在我的ViewPager使用ViewPager ,但是我找不到任何关于如何操作的信息…我在这个类中find的唯一页面(sic !!)是http:// developer.android.com/reference/android/support/v4/view/PagerTitleStrip.html所以看来我只需要在我的ViewPager布局中添加PagerTitleStrip ,但我的活动中没有看到任何新内容…… 有谁知道如何使用它? 编辑:对不起它在getPageTitle中实现getPageTitle方法时ViewPagerAdapter ……但我不希望显示任何文本,只是一个小光标显示当前视图与上一个和下一个视图的位置…