Articles of android viewpager

如何知道viewpager是向左还是向右滚动?

我正在使用ViewPager(支持库)。 我想知道每次ViewPager更改可见页面时,它都向左或向右滚动。 请给我一个解决方案。 欢迎任何推荐。 谢谢

具有页面指示符的Android视图寻呼机

我需要在视图分页器文件中获取包含图像的页面指示符。 这是我的代码。 public class IndicatorActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyPagerAdapter adapter = new MyPagerAdapter(); ViewPager myPager = (ViewPager) findViewById(R.id.pager); myPager.setAdapter(adapter); myPager.setCurrentItem(0); TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicat); indicator.setViewPager( myPager ); } } 在这段代码中,我在TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicat);中TitlePageIndicator indicator = (TitlePageIndicator)findViewById(R.id.indicat);了一个错误: TitlePageIndicator indicator […]

刷卡上的ViewPager更新片段

我有一个问题,我过去2天一直在努力。 我正在构建一个使用ActionBar,ViewPager和FragmentPagerAdapter的应用程序。 Activity,Fragments和FragmentPagerAdapter的代码与http://developer.android.com/reference/android/support/v4/view/ViewPager.html上的android示例中的内容完全相同。 我面临的问题是 – 假设我在viewPager中只有2个片段。 当在两者之间切换/滑动时,片段不会更新。 onResume不会被调用,因为viewPager将至少1个片段缓存到显示片段的任一侧。 我尝试使用onTabSelected来检测何时选择了一个片段,然后在接口的帮助下从该片段启动一个方法(下面的代码)。 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方法时,尝试更新textview时会触发NullPointerException。 start方法的代码是: public void Start() { TextView tv = _view.findViewById(R.id.text); tv.setText(“test”); } 行抛出exception: TextView tv = _view.findViewById(R.id.text); IStartStop界面非常简单: public […]

为什么要调用片段onCreateView,onCreate,onActivityCreated

我有一个应用程序,处理片段和ViewPager。 我在ViewPager中有三个片段。 当你在它们之间切换时,它总是导致其他两个片段调用它们的onCreateView方法。 仅在创建FragmentActivity时如何才能执行一次? 我已经阅读了一些问题并尝试了解决方案,但片段仍然具有相同的行为。 ListFragment onCreate调用了两次 onCreate()和onCreateView()调用的不仅仅是需要的(片段) 这是一些代码,如果它可以帮助你,伙计们: 主要活动: public class StartingActivity extends FragmentActivity implements View.OnClickListener { ViewPager viewPager; CirclePageIndicator pageIndicator; Button discount; Button qrCode; Button pay; TabHost tabHost; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.starting_layout); viewPager = (ViewPager) findViewById(R.id.pager); if (savedInstanceState == null) { Fragment firstPage = Fragment.instantiate(this, FindTovarFragment.class.getName()); Fragment secondPage = Fragment.instantiate(this, […]

如何在Android上的标签之间实施滑动?

Android 4.0中用于标签的关键设计建议之一是允许在适当的位置之间滑动它们。 此行为使用户可以在选定选项卡的内容上水平滑动以导航到相邻选项卡,而无需直接与选项卡本身进行交互。 如何实施?

如何在触摸特定视图时禁用viewpager适配器?

我有一个viewpager,当向左/向右滑动时,它在标签之间切换。在我的第二个标签中,我有一些自定义视图,有捏和拖动的监听器,但当我尝试捏或拖动时,viewpager开始刷页面。 我想到的解决方案是在触摸那些特定视图时禁用滑动,只在触摸那些视图外时滑动。这可能吗? 更新: @Asok友好地提供了解决方案。 但后来更新了在我的情况下无法工作的代码,所以我发布了对我有用的上一段代码: public class CustomViewPager extends ViewPager { private boolean swipeable = true; public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } // Call this method in your motion events when you want to disable or enable // It should work as desired. public void setSwipeable(boolean […]

永远不会调用Android ViewPager的onPageScrollStateChanged

我扩展了ViewPager类并实现了onPageChangeListener。 我将此ViewPager与SherlockFragment中的CirclePageIndicator结合使用。 ViewPager包含ImageViews和TextViews,没什么特别的。 每次更改页面时,我都需要在ViewPager下面做一些事情。 所以,我想我需要使用onPageScrollStateChanged并validation状态是IDLE还是其他什么。 问题是从3个实现的方法(onPageScrollStateChanged,onPageSelected和onPageScrolled),只调用onPageScrolled(我在每个方法中检查了一条日志消息)。 这是为什么 ? 代码如下。 public class UninterceptableViewPager extends ViewPager implements OnPageChangeListener{ private ArrayList mAdaptersList = null; private ListView mListView = null; private ProgressBar mProgressBar = null; public UninterceptableViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public boolean onInterceptTouchEvent(MotionEvent event) { getParent().requestDisallowInterceptTouchEvent(true); return super.onInterceptTouchEvent(event); } public void setAdaptersList(ArrayList adaptersList) { mAdaptersList […]

如何让我的ViewPager一次只加载一个页面,即setOffscreenPageLimit(0);

我理解我可以给setOffscreenPageLimit(int)的最小数字是1.但我需要一次加载一个页面因为内存问题。 我将不得不使用旧式tabhost等? 或者有没有办法/黑客我可以让我的viewPager一次加载一页? 我的适配器使用ViewHolder patern扩展BaseAdapter。

IllegalStateException:应用程序的PagerAdapter在不调用PagerAdapter#notifyDataSetChanged的情况下更改了适配器的内容

我正在使用ViewPager示例,其中包含从Android文档中获取的ActionBar选项卡。 不幸的是,只要我调用addTab方法,应用程序崩溃就会出现以下exception: IllegalStateException:应用程序的PagerAdapter在不调用PagerAdapter#notifyDataSetChanged的情况下更改了适配器的内容! 预期的适配器项目数0,find1。 这是FragmentPagerAdapter代码: public static class TabsAdapter extends FragmentPagerAdapter implements ActionBar.TabListener, ViewPager.OnPageChangeListener { private final Context mContext; private final ActionBar mActionBar; private final ViewPager mViewPager; private final ArrayList mTabs = new ArrayList(); static final class TabInfo { private final Class clss; private final Bundle args; TabInfo(Class _class, Bundle _args) { clss = _class; […]

更改屏幕旋转时ViewPager片段消失

我正在开发包含带有Fragment的ViewPager android应用程序,如下所示: MainActivity ( MainActivityFragment ( screenSlideViewPager ( Fragment s))),表示: Activity 包含 Fragment 包含的 ViewPager 包含 Fragment 现在我的问题是当旋转设备或更改屏幕旋转时,ViewPager中的所有片段都会消失。 有什么想法来解决这个问题吗? 编辑1 MainActivity.java: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getSupportFragmentManager().findFragmentByTag(TAG) == null) { final FragmentTransaction ft = getSupportFragmentManager() .beginTransaction(); ft.add(android.R.id.content, new MainActivityFragment(), TAG); ft.commit(); } } MainActivityFragment.java: public class MainActivityFragment extends Fragment { private ViewPager […]