Articles of android viewpager

在ViewPager中禁用animation

我想在我的自定义ViewPager禁用所有的转换animation。 这个视图分页器包含四个选项卡 – 每个选项卡加载一个分Fragment – 视图分页器所做的是切换选项卡:例如第一个选项卡是索引,第二个是地图等。 问题是,如果作为第一个选项卡,我点击第四个选项卡,我可以看到ViewPager如何通过第二个和第三个选项卡,并停止在第四个,我不希望这种情况发生。 我试图禁用此ViewPager所有animation尝试使用setAnimation为null每次用户select一个新的标签显示,但它仍然不起作用。 任何想法,以实现这一目标? 提前感谢! 编辑:我也试图覆盖onCreateAnimation为每个Fragment但仍然无法正常工作

刷卡时ViewPager更新片段

我有一个问题,我一直在过去2天挣扎。 我正在构build一个使用ActionBar,ViewPager&FragmentPagerAdapter的应用程序。 Activity,Fragments&FragmentPagerAdapter的代码与http://developer.android.com/reference/android/support/v4/view/ViewPager.html上的android示例中的代码完全相同 我面临的问题是 – 假设我在viewPager中只有2个片段。 当在两者之间切换/滑动时,碎片没有被更新。 onResume不会被调用,因为viewPager会在显示片段的任一侧caching至less1个片段。 我尝试使用onTabSelected来检测何时select了一个片段,然后借助于一个接口(下面的代码)从该片段开始一个方法。 public void onTabSelected(Tab tab, FragmentTransaction ft) { TabInfo tag = (TabInfo)tab.getTag(); for (int i=0; i<mTabs.size(); i++) { if (mTabs.get(i) == tag) { mViewPager.setCurrentItem(i); } } ((IStartStop)getItem(tab.getPosition())).Start(); } 但是,使用Start方法时尝试更新文本视图触发NullPointerException。 启动方法的代码是: public void Start() { TextView tv = _view.findViewById(R.id.text); tv.setText("test"); } 例外情况如下: TextView tv = _view.findViewById(R.id.text); IStartStop接口非常简单: public […]

ViewPager拦截所有的x轴onTouch事件。 如何禁用?

范围 有两个片段的观点。 其中一个碎片有一个布局的女巫在X轴上侦听onTouch的变化。 问题 触摸并沿着X轴滑动时,布局不会获得几乎所有的Action.Move事件。 看来,viewpager有一个onInterceptTouchEvent返回true。 题 重写viewpager的行为来使它和我的布局一起工作是真的吗? 所以完美的情况是布局拦截所有的onTouch事件,viewpagerpipe理其余的onTouch事件。 谢谢!

DialogFragment中的ViewPager + FragmentPagerAdapter获取“IllegalArgumentException:No view found …”

我试图显示一个FragmentDialog(创build并显示为一个对话框不添加为视图层次结构中的内容),其中有一个ViewPager的内容是由FragmentPagerAdapter(提供的碎片组成的图像)​​给出的。 当从FragmentActivity中显示ViewPager + FragmentPagerAdapter时,代码工作正常,但从FragmentDialog中获取以下exception: “IllegalArgumentException:为片段SimpleFragment没有发现ID为0x7f040077 …” 这是我的代码: SherlockFragmentActivity带有一个button来创build和显示对话框。 public class BorrameActivity extends SherlockFragmentActivity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.one_act); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { showTheDialog(); }}); } private void showTheDialog(){ AchGalleryDialog newFragment = AchGalleryDialog.newInstance(achs); newFragment.show(getSupportFragmentManager(), "dialog"); } FragmentDialog: public class AchGalleryDialog extends DialogFragment{ public AchGalleryDialog(){ […]

没有样式ViewPagerIndicator与SherlockActionBar结合使用

我试图用SherlockActionBar实现ViewPagerIndicator。 它的作品:我可以滑动片段,但风格不起作用! 它看起来像这样: 相关主题: https : //github.com/JakeWharton/Android-ViewPagerIndicator/issues/66 我知道发生了什么问题:在VPI的示例中,页面样式在AndroidManifest.xml中由(例如) <activity android:name=".SampleTabsDefault" android:theme="@style/Theme.PageIndicatorDefaults"> </activity> 但是,当我将android:theme元素添加到我自己的Manifest.xml中时,出现以下exception: 03-16 11:06:24.400: E/AndroidRuntime(483): Caused by: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative. 我也尝试将所有的样式信息复制到styles.xml,但是这也不起作用。 你能告诉我如何给VPI设置一个风格吗? 谢谢! 编辑:现在我已经添加 <activity android:name=".SampleTabsDefault" android:theme="@style/StyledIndicators"> </activity> 到我的Manifest.xml 以及styles.xml中的以下样式 <style name="Theme.BataApp" parent="Theme.Sherlock.Light.DarkActionBar"> <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item> <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item> </style> <style name="StyledIndicators" parent="Theme.BataApp"> <item name="vpiTitlePageIndicatorStyle">@style/Widget.TitlePageIndicator</item> <item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item> <item name="vpiTabTextStyle">@style/Widget.TabPageIndicator.Text</item> […]

CardView layout_margin无效

我正在玩新的CardView,但利润似乎并没有被应用。 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="18dp" android:layout_marginLeft="18dp" android:layout_marginRight="18dp" card_view:cardCornerRadius="4dp" card_view:cardBackgroundColor="#FFA" card_view:layout_margind="4dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/info_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!"/> </LinearLayout> </android.support.v7.widget.CardView> 顺便说一句,我用它在一个ViewPager中的片段。 即使我在CardView上使用android:layout_marginLeft =“18dp”和android:layout_marginRight =“18dp”,该卡也会扩展整个屏幕宽度(match_parent)。 任何想法我可能做错了什么?

在PopupWindow(或DialogFragment)中带有碎片的ViewPager – 错误没有为碎片的idfind视图

我用下面的代码创build了一个FragmentActivity public class Activity_principal1 extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_principal1); List<Fragment> fragments = getFragments(); AcoesMuscularesAdapter ama = new AcoesMuscularesAdapter(getSupportFragmentManager(), fragments); ViewPager vp_contentAcoesMusculares_SequenciaExercicios = (ViewPager) findViewById(R.id.vp_contentAcoesMusculares_SequenciaExercicios); vp_contentAcoesMusculares_SequenciaExercicios.setAdapter(ama); } private List<Fragment> getFragments(){ List<Fragment> fList = new ArrayList<Fragment>(); fList.add(FragmentAcoesMusculares.newInstance("Fragment 1",1)); fList.add(FragmentAcoesMusculares.newInstance("Fragment 2",2)); fList.add(FragmentAcoesMusculares.newInstance("Fragment 3",3)); return fList; } } 这是我的XML <?xml version="1.0" encoding="utf-8"?> <RelativeLayout […]

查看寻呼机和片段生命周期

我有一个ViewPager一次加载三个页面。 如果我从页面1滑动到页面2然后滑动到3,则第一页(片段)进入onPause() 。 然后,如果我滑动到第二页,第一页到达onResume()即使页1仍然是不可见的用户。 所以,我的问题是:如何区分代码中的第一个和第二个页面? 例如,如果我必须在片段可见时运行一段代码,那么这是如何完成的?

ViewPager FragmentPagerAdapter空指针

我通过使用Android 支持包中的ViewPager得到了这个错误。 从ViewPager教程的水平视图滑动 06-19 13:07:25.950: E/AndroidRuntime(16382): FATAL EXCEPTION: main 06-19 13:07:25.950: E/AndroidRuntime(16382): java.lang.NullPointerException 06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:347) 06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:342) 06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97) 06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649) 06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.view.ViewPager.populate(ViewPager.java:783) 06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016) 06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594) 06-19 13:07:25.950: […]

如何实现PagerAdapter的查看回收机制?

我有一个寻呼机适配器,假设膨胀表示日历的复杂视图。 每年的日历膨胀大约需要350毫秒。 为了提高性能,我想实现存在于回收视图的ListView数组适配器( getView() convertView参数)中的机制。 这是我的当前getView()从适配器。 @Override protected View getView(VerticalViewPager pager, final DateTileGrid currentDataItem, int position) { mInflater = LayoutInflater.from(pager.getContext()); // This is were i would like to understand weather is should use a recycled view or create a new one. View datesGridView = mInflater.inflate(R.layout.fragment_dates_grid_page, pager, false); DateTileGridView datesGrid = (DateTileGridView) datesGridView.findViewById(R.id.datesGridMainGrid); TextView yearTitle = […]