Articles of android viewpager

ViewPager java.lang.OutOfMemoryError:位图大小超过VM预算

可能重复: java.lang.OutOfMemoryError:位图大小超过VM预算 – Android 我使用ViewPager来显示资源文件夹中的图像集,如果我的图像尺寸很小,那么每件事都可以正常工作, 但当我用高清图像替换它,我需要它在我的应用程序,它给了我这个错误: java.lang.OutOfMemoryError:位图大小超过VM预算 注1: 我现在在我的代码中有5个图像用于测试,但最后我将有大约30个高清图像, 笔记2 : 我想知道为什么会发生这种情况,我是Android新手并且第一次使用viewpager类,之后我在另一个应用程序中使用了Gallery类,其中包含超过30个高清图像并且没有exception发生。 任何建议将不胜感激,非常感谢 我的代码: logcat堆栈: FATAL EXCEPTION: main java.lang.OutOfMemoryError: bitmap size exceeds VM budget at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:563) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:439) at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:462) at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:488) at com.test.demo.MyPagerAdapter.(MyPagerAdapter.java:42) at com.test.demo.MainActivity.onCreate(MainActivity.java:15) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) at android.app.ActivityThread.access$1500(ActivityThread.java:117) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:123) at android.app.ActivityThread.main(ActivityThread.java:3687) […]

替换父片段根布局的子片段

我有一个5个片段的viewpager,其中一个我想通过按钮点击完全替换它。 我也希望能够通过后退按钮隐藏子片段。 这里的片段布局: 当我尝试像这样替换contacts_layout : ImportContactsFragment importContactsFragment = new ImportContactsFragment(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.addToBackStack(null); transaction.replace(R.id.contacts_layout, importContactsFragment).commit(); 它不起作用(我的意思是没有错误,但我的ImportContactsFragment根本没有显示)。 但是,当我尝试替换import_contacts视图时,如下所示: ImportContactsFragment importContactsFragment = new ImportContactsFragment(); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); transaction.addToBackStack(null); transaction.replace(R.id.import_contacts, importContactsFragment).commit(); 一切正常,显示了ImportContactsFragment。 所以我想知道是否可以用子片段替换所有片段内容? 也许我可以用其他方式做到这一点?

之前调用Fragment的onStart()来显示Viewpager,navigation_mode_tabs

我使用ViewPager和带有NavigationMode的ActionBar:“NAVIGATION_MODE_TABS” 我放了3个片段:Fragment0(左标签),Fragment1(中间标签),Fragment2(右标签) 首先,出现Fragment0,并为Fragment0和Fragment1调用方法“onCreateView”和“onStart” 如果我水平滑动以转到“中间选项卡”(Fragment1),则会调用Fragment2(右选项卡)的方法“onCreateView”和“onStart”… 所以,我想知道这是否正常? 因为我想在它出现之前调用Fragment2的“onStart”,它是怎么做到的? 我的代码: public class ActivityPrincipale extends FragmentActivity { private Intent intentService1; private Fragment fragment; [..] private ActionBar.TabListener tabListener; @Override protected void onCreate(Bundle arg0) { super.onCreate(arg0); setContentView(R.layout.viewpager); // Création de la liste de Fragments que fera défiler le PagerAdapter listFragments = new Vector(); // Ajout des Fragments dans la liste des […]

在ViewPager中未使用Fragment调用onCreateView

我正在使用ACL中的ViewPager来显示几个Fragment 。 首先,这些片段所有ListFragment都包含一个列表。 我正在尝试模仿2列表,因此列表中的每个元素都包含另一个两个对象的列表。 我希望每个单元格都可以长按(不是整个列表项),因此我实现了自己的ColumnLayout(也许它应该被称为CellLayout)。 每个列表项包含两个可长按的ColumnLayouts,并实现getContextMenuInfo()以返回有关长按哪个实体的信息。 此方法查找ViewPager,请求当前片段,然后调用片段以从长按的视图中返回实体ID。 为了获得片段需要执行的正确行: getListView().getPositionForView(v) 这就是问题的起点。 有时getListView()会抛出IllegalStateException说“尚未创建内容视图”。 即onCreateView(…)尚未被调用。 这有时仅在应用程序恢复时发生。 今天,我设法通过在我的Galaxy Nexus上的设置>开发人员选项中启用“不要保持活动”选项来重新产生问题。 我启动应用程序,按Home,然后从最近的应用程序菜单重新打开应用程序,现在,如果我长按listview中的任何单元格,则抛出此exception。 通过一些调试输出,我设法validation从未调用onCreateView。 这有点奇怪,因为整个ViewPager及其Fragment及其ListView及其单元格项目都被绘制出来了! 我在#android-dev上被告知ACL中的ListFragment不支持自定义布局,所以我重新实现了我的android.support.v4.app.Fragment而没有使用ListFragment但这没有帮助。 简短摘要:我有一个自定义布局,用于处理长按布局的事件,目的是创建一个MenuInfo对象,其中包含有关按下的单元格中的MenuInfo的信息。 为了find布局中包含的实体,最终会调用listview.getPositionForView(View v) ,有时会导致IllegalStateException 。 在这里我的自定义布局(也许有一种更简单的方法来获取ViewPager不是在视图层次结构中挖掘): package org.remotestick; import android.content.Context; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.ContextMenu.ContextMenuInfo; import android.view.View; import android.widget.LinearLayout; public class ColumnLayout extends LinearLayout { public ColumnLayout(Context context, AttributeSet attrs) { super(context, attrs); } public […]

如何在ViewPager中水平滚动webview?

我有一个viewpager,每个页面都必须显示不同的WebView。 这个WebView应该允许horizo​​ntall scrool,我想在滚动完成时滑动到下一页。 我搜索过,并find了一些解决方案,但我没有解决这个问题。 我有一个CustomViewPager和一个CustomWebView来尝试处理滚动事件。 这是我的代码: 自定义ViewPager public class WebViewPager extends ViewPager { public WebViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) { if (v instanceof ExtendedWebView) { return ((ExtendedWebView) v).canScrollHor(-dx); } else { return super.canScroll(v, checkV, dx, x, y); } } […]

如何使用共享视图animation实现App简介

我正在尝试实现一个应用程序介绍,如附加的gif。 我知道Viewpager不支持共享animation,但我真的需要这样的东西。 任何帮助,将不胜感激。

ViewPager中的SwipeRefreshLayout

我有一个由工具栏和视图寻呼机组成的活动。 其布局如下: 然后我将两个片段加载到视图寻呼机中。 每个片段都包含自己的SwipeRefreshLayout 。 我将展示一个片段布局: … 现在,当我运行活动时,它似乎工作。 但是我注意到我是水平滑动(即转到下一个标签)。 它会触发swipeRefreshLayout OnRefreshListener mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { mSwipeRefreshLayout.setRefreshing(true); DoUpdate(); } }); 当我尝试刷新时,我也会遇到奇怪的视觉行为。 装载标志(旋转圆圈)通常不显示,有时会显示但保持较小。 我不确定这是否也是导致两种观点相互冲突的原因。 有什么方法可以解决这个问题。 我不确定如何。 也许通过将SwipeRefreshLayout限制为仅侦听垂直滑动? 任何建议将不胜感激。

在片段中间查看寻呼机标签

如何实施这些标签,与Google plus个人资料页面相同? 我认为我不能使用ActionBar标签,因为它们被归入ActionBar。 我希望标签位于此图像中的图像下方。 此外,我希望修复这些选项卡。 我想要三个选项卡,并且所有三个选项卡都应该在屏幕上可见 – 因为android固定选项卡加上使用Action Bar选项卡的滑动布局。

Android:在viewpager中滚动使用recyclerview的问题

我在ViewPager中有一个RecyclerView ,它只占据屏幕的下半部分,而我想要做的是在RecyclerView收到垂直滚动事件时整个屏幕滚动。 UI层次结构简而言之: CoordinatorLayout — AppBarLayout — Toolbar — Bunch of static LinearLayouts, occupy most of screen — TabLayout — ViewPager — Fragments with RecyclerView 我有什么 : 根据我的理解, RecyclerView具有内存效率,并试图适应屏幕中可用的任何空间。 在我的应用程序中,我有一个ViewPager托管多个选项卡,每个选项卡都有一个RecyclerView来显示不同的东西。 你能否告诉我一些关于如何使整个屏幕滚动的想法? 我猜测最佳镜头是在屏幕中间的静态内容中添加带有视差的CollapsingToolbarLayout 。 我甚至试图这样做,但UI完全被打破了。 这很困难因为我只希望屏幕中间的内容滚动出来,而不是顶部的工具栏。 我对NestedScrollView也没有太多运气,显然它与ViewPager和CoordinatorLayout兼容性并不是直截了当的。 我想要的是: 主要活动布局: Viewpager中的片段: 提前致谢! 更新:我在这里收到的回复(感谢我的回复)来得太晚了。 如果有人知道哪个是正确答案,请告诉我!

带标题视图的ViewPager

我需要制作看起来像这样的布局 有标题视图(RelativeLayout),下面是ViewPager Indicator,然后是ViewPager,页面(FragmentPagerAdapter)包含ListView或ScrollView。 因为标题视图可能很大,所以整个布局应该是可滚动的。 我最好的尝试是让ListView有两个标题(Header视图和ViewPager) – 但这是非常糟糕的,因为ListView在另一个ListView和回收问题。 这样做的最佳方法是什么? 是否有任何方法可以添加ViewPager标题视图,因为它可以使用ListView和addHeaderView()方法完成? 谢谢你的帮助!