Articles of android viewpager

FragmentPagerAdapter滑动以显示ListView 1/3屏幕宽度

编辑: 请参阅下面的答案 – > 我想要一个视图,当向右滑动时,会显示listView。 与新版Google Play商店中实施的内容非常相似(下面的示例图片)。 我认为它是一个ViewPager,但我尝试重复它没有占上风。 我认为可能只是’listView Page’width属性设置为特定的dp但不起作用。 我也尝试修改pakerfeldt的viewFlow并且无法弄清楚Google是如何做到这一点的 我是在正确的轨道上吗? 如果有人知道如何复制这个,我会非常感激。 我认为这可能成为在平板电脑上显示导航视图的一种流行的新方式….? 代码将是最好的帮助。 谢谢!! 向右滑动: 刷完; 布局显示列表和第二部分(完全如图所示)列表片段未填满屏幕: 当用户向左滑动时,仅显示主页面,如果用户再次向左滑动,则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); // […]