Articles of android viewpager

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

如何使用新的设计库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: […]