Articles of android viewpager

使用ViewPager和PassByValue刷页时会执行onTouchEvent

在我的项目中,使用onTouchEvent来检测屏幕上的触摸并相应地执行操作,并使用viewPager进行滑动操作。 滑动问题是触摸操作正在执行。 所以从这里find解决方案解决了它。 但我的新问题是,一旦TouchEvent.Action_up被执行,触摸就会被禁用。 代码如下: parent.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_MOVE: awesomePager.requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_UP: awesomePager.requestDisallowInterceptTouchEvent(true); if(flag) { upperdock.setClickable(false); upperdock.bringToFront(); tocparent.bringToFront(); tocbottom.bringToFront(); upperdock.setVisibility(RelativeLayout.VISIBLE); tocparent.setVisibility(LinearLayout.VISIBLE); tocbottom.setVisibility(LinearLayout.VISIBLE); flag=false; } else { parent.bringToFront(); upperdock.setVisibility(RelativeLayout.INVISIBLE); tocparent.setVisibility(LinearLayout.INVISIBLE); tocbottom.setVisibility(LinearLayout.INVISIBLE); flag=true; } break; case MotionEvent.ACTION_CANCEL: awesomePager.requestDisallowInterceptTouchEvent(false); break; default: break; } return false; } }); […]

如何从另一个页面控制viewPages页面

我有一个ViewPager , ViewPager有3页,每页都有listView 。 我想以一种方式为listView设置animation,当用户水平滑动下一页时, listView的项应该根据下一页的宽度来实现。 即第一项应该完全推入,第二项应该是可见的一半,口渴应该是可见的一半,以此类推。 这种types的animation已经在mi3 xiamo中用于联系人列表。 在上面的图像中,我正在朝正确的方向滑动。注意’最近’列表项可见性。 如果有人可以帮我做这个animation,那将是一个很好的帮助。请根据ViewPager页面更改分享ListViewanimation上的一些链接或提示。

onPrepareOptionsMenu未被调用

我无法让onPrepareOptionsMenu()正常工作。 无论我尝试什么,我都无法得到它。 我的应用程序的体系结构如下:我的主Activity包含一个包含ViewPager的Fragment,而ViewPager又有四个子Fragment实例。 目前,我(已成功)使用onCreateOptionsMenu() )填充Activity中的初始选项菜单,但我希望添加一些与每个活动子Fragment相对应的额外选项。 在我的子setHasOptionsMenu(true) ,我确保在onCreate()调用setHasOptionsMenu(true) ,并在onActivityCreated()调用getSherlockActivity().supportInvalidateOptionsMenu() onActivityCreated() 。 在主Activity中, onCreateOptionsMenu()在实例supportInvalidateOptionsMenu() Fragment后调用一次,无论它们是否包含supportInvalidateOptionsMenu() 。 随后,只要替换了寻呼机中的片段,就会再次调用它。 我已经尝试将onPrepareOptionsMenu()代码向上移动到父片段和主Activity – 无济于事,这表明问题与我使用嵌套片段无关。 我也尝试将onCreateOptionsMenu()方法从主Activity移动到两个片段,在那里它不被调用。 如果有人知道这里发生了什么,我会非常感激,因为我已经被困在这两天了。 更新 – 我已经确切地解决了现在的问题,只是我仍然不确定如何解决它。 我在4.2上进行测试,似乎onCreateOptionsMenu()在Activity中的onResume()之后调用 – 如在JB 4.2上onResume之后调用的onCreateOptionsMenu中所示 。 我认为这意味着片段无法调用onPrepareOptionsMenu()因为菜单在实例化后才会存在。 那么我该如何解决这个问题呢?

在Android 4.4设备上看不到工具栏和TabLayout

我试图通过参考[ http://blog.grafixartist.com/material-design-tabs-with-android-design-support-library/] [博客]使用谷歌设计库来实现工具栏和TabLayout。 输出在Lollipop设备上按预期工作,但它不会在Kitkat设备上显示ToolBar和TabLayout。 但我仍然可以按预期在kitkat设备上滑过3个片段。 为什么使用谷歌支持库编写的相同代码在不同设备上的工作方式不同! 我试着提到[ 工具栏在Android 4.X设备上不可见[已解决]问题,但它没有解决问题。 我尝试使用API​​ 19在模拟器中运行代码,但同样面临同样的问题。 我添加了’com.android.support:appcompat-v7:22.2.0’和’com.android.support:design:22.2.0’依赖项该项目。 activity_main.xml中 MainActivity.java public class MainActivity extends AppCompatActivity { public ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); viewPager = (ViewPager) findViewById(R.id.viewpager); setupViewPager(viewPager); TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout); tabLayout.setupWithViewPager(viewPager); tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab […]

ListView中的ViewPager和OnItemClickListener

我正在创建一个轻扫到列表视图适配器。 我的基本方法是将列表项的视图包装为ViewPager中的第二个视图,并在ViewPager的项更改侦听器中提供必要的回调。 通过很多痛苦我已经使View回收器按预期工作,以及实现了ViewHolder和ViewBinder模式。 我甚至设法阻止ListView在ViewPager滚动时接管触摸事件,而不必创建ListView的自定义子类(我可以从适配器完成所有操作)。 我遇到麻烦的地方是让选择器和OnItemClickListener工作。 在查看ListView的源代码之后,似乎通过重写ViewPager的hasFocusable()方法总是返回false(稍后我将从子视图中提取此值)这些内容应该已经重新启用。 不幸的是,这种情况并非如此。 我已经尝试了setDecendantFocusability()解决方法,但我仍然卡住了。 我想避免在可能的情况下扩展ListView以提供最大程度的模块化。 出于类似的原因,我不想将选择器添加到ViewPager的背景中(如果dev更改了ListView的选择器,则不会反映这一点)。 本质上,我希望在ListView和子视图之间使ViewPager代码透明。 有任何想法吗?

将拖动项目实现到屏幕边缘function

当项目在屏幕边缘(左侧或右侧)附近拖动时,我需要实现当前标签更改。 拖拽N下降function和当前选项卡切换没有问题。 我只是无法正确处理此事件 – 当拖动项目靠近屏幕边缘时。 你会怎么做? 我尝试了什么: 我们的想法是在切换区域拖动项目时以编程方式更改当前选项卡。 但是,该区域上的事件DragEvent.ACTION_DRAG_ENTERED永远不会发生,因为(我相信) GridView占据了整个屏幕,并且只是与切换区域重叠。 我已经尝试在触发拖动启动事件时将这些区域带到前面。 但由于某种原因,这不起作用。 FrameLayout toggleView = (FrameLayout) v; toggleView.bringToFront(); toggleView.requestLayout(); toggleView.invalidate(); 如果有人遇到这样的问题,请分享您的经验。 或许还有另一个更好的解决方案。 请给我一个提示。

使用NestedScrollView处理VerticalViewPager的滚动

背景: 我使用的是ViewPager的变体,它不是在水平方向上滚动,而是在垂直方向上滚动。 VerticalViewPager : https : //android.googlesource.com/platform/packages/apps/DeskClock/+/master/src/com/android/deskclock/VerticalViewPager.java android.support.v4.app.FragmentStatePagerAdapter用于设置VerticalViewPager的内容。 每次调用FragmentStatePagerAdapter getItem() ,我都会从FragmentStatePagerAdapter创建并返回一个新的android.support.v4.app.Fragment实例,如下所示: @Override public Fragment getItem(int position) { return PreviewFragment.getNewFragmentInstance(position); } PreviewFragment呈现可能不适合屏幕的内容。 为了显示不适合屏幕的所有内容, android.support.v4.widget.NestedScrollView用作PreviewFragment布局的父元素。 问题: PreviewFragment内容按预期滚动到位置0。 但是,为了切换到下一页,必须多次执行甩动或滑动操作,因此向位置1的页面滑动是非常困难的。 此外,投掷或滑回到位置0非常困难或几乎不可能。 需要: Fling或滑动或切换到PreviewFragment下一个实例应该是平滑的。 换句话说,滚动内容应该是平滑的,同时请记住,滑动到下一页也应该顺利工作。 如上所述链接到示例项目

更改Android Viewpager中的pagetitle

我有一个ViewPager ,我在其中使用getPageTitle方法来获取当前页面的标题。 这是适配器代码: @Override public Fragment getItem(int i) { details = productData.get(i); Fragment fragment = new ProductViewFragment(); Bundle args = new Bundle(); args.putInt(ProductViewFragment.ARG_SECTION_NUMBER, i + 1); fragment.setArguments(args); return fragment; } @Override public int getCount() { return productData.size(); } public CharSequence getPageTitle(int position) { return (position+1)+” of “+myData.size(); } 现在我想更新上一​​个和下一个片段的页面标题。 我想将它们命名为“previous”和“next”。 它也应该在后续页面上动态更新。 我能够获得当前页面标题号。 例如,当我查看第5个片段时,当前片段将正确显示标题。 在ViewPager的两个角上,它显示左侧的上一页标题编号和右侧的下一页标题编号。 现在,我希望左侧的“上一个”和右侧的“下一个”页面标题类似于Gmail应用程序以及它如何显示ViewPager中的邮件计数。 […]

ViewPager中的PagerTabStrip位置

我有以下代码: 一切都像它应该的那样布局。 我现在想要的是PagerTabStrip覆盖了ViewPager 。 它应该在顶部呈现而不占用任何布局空间。 基本上,ViewPager中的片段应该像PagerTabStrip一样从0开始。 任何帮助赞赏。 谢谢!

Android ViewPager在容器中替换时不调用onDetach / onDestroy / onDestroyView

我有一个FrameLayout容器,我在其中使用replace方法在从导航抽屉中选择一个项目时放置一个片段。 getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment, fragment.getFragmentTag()).commit(); 我有一个片段,里面有一个ViewPager。 我有3个片段,使用ViewPager以标签布局显示。 当我从导航抽屉中选择另一个项目时,将替换ViewPager中的片段,但其中的片段不会分离。 系统只使用ViewPager onDetach / onDestroy等方法调用片段,但不调用它包含的片段的方法。 我正在使用FragmentPagerAdapter,我尝试使用FragmentStatePager适配器。 没有什么变化。 我使用默认的setOffscreenPageLimit(1); 如何调用我的ViewPager片段方法onDetach / onDestroy? 谢谢!