Articles of android viewpager

ViewPager内的ScrollView会自动滚动到中间

我有一个ViewPager包含同一个片段的几个实例,这个片段包含一篇文章。 文章视图层次结构非常简单,包括标题,横幅图像,副标题和正文; 除标题之外的所有内容都包含在scrollview中。 问题是 ,当您滑动到新页面时,片段会在顶部显示视图,然后立即滚动到容器的中间。 (事实上​​,它滚动到带有id: article_content的TextView的开头) 我已在问题的底部发布了布局。 现在,ViewPager设置了一个FragmentStatePagerAdapter的简单实现,这里是代码: class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { Bundle args; int count; public ScreenSlidePagerAdapter(FragmentManager fm) { super(fm); this.count = 8; } @Override public Fragment getItem(int position) { ArticleFragment mPrimaryFragment = new ArticleFragment(); args = new Bundle(); args.putString(ArticleFragment.KEY_ARTICLE_URL, mCurArticleLink); mPrimaryFragment.setArguments(args); return mPrimaryFragment; } @Override public int getCount() { return count; […]

Android FragmentStatePagerAdapter,如何标记片段以便稍后find它

使用FragmentStatePageAdapter我得到这样的片段: @Override public Fragment getItem(int position) { return new SuperCoolFragment(); } 但是,稍后我的代码我需要find这个片段来设置属性。 在我使用片段的应用程序的其他一些部分,我基本上标记它们并使用findFragmentByTag(TAG)查找它们,但现在我不知道该怎么做。 如何使用FragmentStatePageAdapterfindFragmentStatePageAdapter ?

ScrollView中的ViewPager

我需要在ScrollView有一个ViewPager但是当它在ScrollView时, ViewPager不会出现,当我不使用ScrollView时一切正常。 我已经在stackoverflow或其他网站上看到过这样的问题,并且所有这些问题都得到了解答,你必须将android:fillViewport=”true”放到你的scrollview来修复问题,但这个解决方案不起作用对我来说,即使我的ScrollView有android:fillViewport=”true” , ViewPager仍然没有出现。 我想android api中的某些内容发生了变化,这个解决方案不再适用了,有没有人知道我怎么可能让ViewPager出现在ScrollView ? 更新:一个有效的ScrollView布局XML:

使用getItemPosition(Object object)重新排序FragmentStatePagerAdapter中的页面

我相信当重写getItemPosition(Object object)时,FragmentStatePagerAdapter的行为不正确,目的是重新排序页面。 下面是一个简单的例子。 在初始状态中,页面的顺序是{A,B,C}。 在调用toggleState() ,页面的顺序变为{A,C,B}。 通过重写getItemPosition(Object object) ,我们确保正在查看的当前页面(A,B或C)不会更改。 public static class TestPagerAdapter extends FragmentStatePagerAdapter { private boolean mState = true; public TestPagerAdapter(FragmentManager fragmentManager) { super(fragmentManager); } @Override public int getCount() { return 3; } private void toggleState() { mState = !mState; notifyDataSetChanged(); } private String getLabel(int position) { switch (position) { case 0: return […]

从BackStack中保留ViewPager中的Fragment时重新加载WebView

这是包含WebView的基本Fragment的代码。 WebFragment.java public class WebFragment extends Fragment { String TAG = “WebFragment”; private WebView webView; private String currentUrl = “http://www.google.com”; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.webview_layout, null); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); webView = (WebView) getView().findViewById(R.id.helloWebview); initWebView(); webView.loadUrl(currentUrl); } @SuppressLint(“SetJavaScriptEnabled”) private void initWebView() { webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new […]

PagerAdapter中的instantiateItem(ViewGroup,int)和ViewPager中的AddView混淆

到目前为止,我一直在黑客攻击示例,以便了解Android SDK作为一个整体的API。 但是,我陷入了僵局。 我正在尝试使用XML文件中的2个TextView来为LinearLayout充气。 这些将是分页的视图。 我根本无法让这个工作,并意识到我完全不明白代码发生了什么。 查看源代码,我可以看到方法ViewPager.addNewItem从提供的适配器调用InstantiateItem。 并且在populate()调用addNewItem。 populate()在许多其他地方被调用。 无论如何,在这个例子中,我已经体验过,当为PagerAdapter重写该方法时,必须在从ViewPager作为parameter passing的ViewPager集合中包含对addView()的调用。 如果我希望添加多个视图,我认为这将是多次调用addView()的情况,但是当instantiateItem()将一个Object返回给ViewPager时(在示例中我让它返回它添加的视图)我不知道知道该返回什么。 我已经尝试返回膨胀的视图和其他一些东西。 请问有人可以解释这里发生了什么吗? 非常感激。 @Override public Object instantiateItem(View collection, int position) { layout = inflater.inflate(R.layout.animallayout, null); TextView tv = (TextView) layout.findViewById(R.id.textView1); tv.setText(“1________________>” + position); TextView tv2 = (TextView) layout.findViewById(R.id.textView2); tv.setText(“2________________>” + position); ((ViewPager) collection).addView(layout); return layout; }

在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允许旋转,但这不起作用。 该应用程序仍处于纵向模式。 有没有办法实现这个目标? 实际活动实际上并不需要旋转,如果无论如何都允许片段在没有活动的情况下改变方向,但我没有发现任何提及这是可能的。 如果活动旋转也同样可以,因为标签栏在横向时将被隐藏。