Articles of android viewpager

包含TableLayouts的片段的ViewPager加载缓慢:

我正在使用ViewPager开发一个Activity,其中包含Fragments(每次最多4个片段),每个包含TableLayout 。 所以基本上加载了4个表。 这是将数据加载到Fragment的代码, Fragment稍后附加到ViewPager : public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (container == null) { return null; } LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); layoutParams.gravity=Gravity.CENTER_VERTICAL; layoutParams.setMargins(10, 0, 0, 0); fragmetLayout = (LinearLayout)inflater.inflate(R.layout.grid_fragment_layout, container, false); table = (TableLayout) fragmetLayout.findViewById(R.id.tlGridTable); llParameterContainer = (LinearLayout) fragmetLayout.findViewById(R.id.llParametersContainer); tabName = (TextView) fragmetLayout.findViewById(R.id.tvTabName); tabName.setText(tab.getTabName()); //tabName.setLayoutParams(layoutParams); for (Parameter parameter : […]

在viewpager中使用backstack和back按钮

我正在使用viewpager在片段之间滑动,并希望后退按钮导航到先前查看的片段而不是结束活动。 很抱歉,如果这是这个问题的副本,但我没有find答案非常有帮助。 显然onBackPressed需要被覆盖,但我不知道如何获取并显示正确的片段。 我假设我应该使用fragmentmanager的backstack,但是getSupportFragmentManager().getBackStackEntryCount()总是返回0.我是否需要使用FragmentTransaction.addToBackStack()手动将片段添加到backstack? 如果是这样,我会在适配器中添加它? 这是我活动的代码, public class PagerActivity extends FragmentActivity { ArrayList sales; MyAdapter mAdapter; ViewPager mPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent it = getIntent(); this.sales = (ArrayList) it.getExtras().get(“sales”); int position = it.getExtras().getInt(“position”); ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); setContentView(R.layout.fragment_pager); mAdapter = new MyAdapter(getSupportFragmentManager()); mPager = (ViewPager) findViewById(R.id.pager); mPager.setAdapter(mAdapter); mPager.setCurrentItem(position); } public […]

Android中不同宽度的布局在ViewPager中

我想使用Horizo​​ntal View Pager创建一些滚动视图。 左视图必须具有全屏宽度,但只有四分之一宽度(它将是Dolphin浏览器中的垂直面板)。 这可能吗? 我在正确的布局中改变了android:layout_width ,但它没有用。 我的代码: public class TestActivity extends FragmentActivity { @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_view); MyPagerAdapter adapter = new MyPagerAdapter(); ViewPager pager = (ViewPager) findViewById(R.id.panelPager); pager.setAdapter(adapter); pager.setCurrentItem(0); } } main_view.xml MyPagerAdapter.java public class MyPagerAdapter extends PagerAdapter { @Override public int getCount() { return 2; } @Override public […]

如何使用Espresso 2.2在Android中测试查看寻呼机滑动手势

我正在使用Espresso 2.2为View pager编写自动化测试,我需要在其中测试滑动function。 我写了下面的代码: @LargeTest public class FirstActivityTest { @Rule public ActivityTestRule firstActivityTestRule = new ActivityTestRule( FirstActivity.class); @Test public void testViewPagerSwipeFunctionality() throws InterruptedException{ onView(withId(R.id.tv_commu)).check(matches(withText(R.string.first_screen_text))); onView(withId(R.id.tv_skip)).check(matches(withText(R.string.skip))) ; onView(withId(R.id.radio_button_first)).check(matches(isChecked())); onView(withId(R.id.view_pager)).perform(swipLeft()); onView(withId(R.id.radio_button_second)) .check(matches(isChecked())); onView(withId(R.id.tv_comp)).check(matches(withText(R.string.second_screen_text))); onView(withId(R.id.tv_skip)).check(matches(withText(R.string.skip))) ; onView(withId(R.id.view_pager)).perform(swipeLeft()); onView(withId(R.id.radio_button_third)) .check(matches(isChecked())); onView(withId(R.id.tv_skip)).check(matches(withText(R.string.skip))) ; onView(withId(R.id.tv_person)).check(matches(withText(R.string.third_screen_text)));}} 但是,方法swipeLeft()没有得到解决。 请告诉我我在哪里做错了? 我们将非常感谢您的帮助。

Android“第一次”app用户教程

我正在尝试为我的应用程序创建一个包含四个窗格的开放教程,但由于我是Android的新手,我想确保在将此任务标记为“完成”之前我正在考虑所有选项。 我知道三种方式,我只能真正完成一种方式。 本教程没有要求,但是一些“想要的function”将是每个窗格的滑动动作,以及图像和底部(导航圆圈)不移动和顶部的标题不移动。 单程 4个独立的活动和4个独立的布局 红色圆圈项目是水平居中并从顶部推出的textView。 白色圆圈项目是水平和垂直居中的imageViews 。 紫色圆圈是imageViews水平居中并从底部推出。 第二种方式 一项活动有4个片段 碎片很难学,但我读的越多/看到它们的教程,它们似乎只能用于平板电脑。 这是实现这一目标的有效方法吗? 第三种方式 ViewPager? http://android-developers.blogspot.com/2011/08/horizo​​ntal-view-swiping-with-viewpager.html 我之前从未使用过这个,但我知道这是一个选择。 最后的问题 更常使用哪种方式/实现此方法的正确方法是什么? 有没有办法让中间部分(图像)滑入,但标题(顶部)和导航图像(底部)只是在图像滑入后才会改变?

Android – 尝试在空对象引用上调用虚方法’void android.support.v4.app.Fragment.setMenuVisibility(boolean)’

以下是错误的完整堆栈跟踪: http : //pastebin.com/5dQHkUw3 只有在我开始在项目中使用片段后才会出现错误,因为我想提供JSON提要。 在我创建Tabs,NavigationDrawer等之前很好。 MainActivity.java 公共类MainActivity扩展ActionBarActivity实现MaterialTabListener { private Toolbar mToolbar; private NavigationDrawerFragment mDrawerFragment; private DrawerLayout mDrawerLayout; private MaterialTabHost mTabHost; private ViewPager mViewPager; public static final int SERVICES_ALL = 1; public static final int SERVICES_FEATURED = 2; public static final int SERVICES_NEW = 3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_appbar); mToolbar = […]

如何拦截ViewPager.OnPageChangeListener中的触摸事件

我试图禁止我的ViewPager在标签之间滚动。 我有以下情况: public class MyClass extends ViewPager implements ViewPager.OnPageChangeListener, OnTouchListener { public MyClass() { setOnTouchListener(this); } @Override public void onPageScrollStateChanged(int state) { Log.d(“Testing”, TAG + ” onPageScrollStateChanged”); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { Log.d(“Testing”, TAG + ” onPageScrolled”); } @Override public void onPageSelected(int position) { Log.d(“Testing”, TAG + ” onPageSelected”); […]

Android ViewPager Refresh片段

在我的应用程序中有2个选项卡(Android设计支持库)这是带有ViewPagerAdapter的片段: public class ListaCanali extends Fragment { public static TabLayout tabLayout; public static ViewPager viewPager; public static int int_items = 2 ; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v =inflater.inflate(R.layout.lista_canali, container,false); //Titolo Fragment ((MainActivity) getActivity()).setActionBarTitle(“Lista Canali”); //FindViewById tabLayout = (TabLayout) v.findViewById(R.id.tabs); viewPager = (ViewPager) v.findViewById(R.id.viewpager); //Funzioni Tab viewPager.setAdapter(new […]

为每个视图增加新的布局xml – 在PagerAdapter中实例化instantiateItem

所以基本上我想在ViewPager中填充页面,为每个视图位置使用单独的XML布局。 我现在正在这样做 @Override public Object instantiateItem(View container, int position) { LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE); if(position == 0){ view = inflater.inflate(R.layout.main, null); ((ViewPager) container).addView(view, 0); } if(position == 1){ view = inflater.inflate(R.layout.main_second, null); ((ViewPager) container).addView(view, 0); } if(position == 2){ view = inflater.inflate(R.layout.main_third, null); ((ViewPager) container).addView(view, 0); } return view; } 首先正确显示视图,但是当我滑动ViewPager时,将隐藏/销毁布局。 为什么是这样? 我这样做是错误的吗? 请帮助并纠正我。 […]

在Android ViewPager中删除项目+滚动到下一步

我有一个包含ViewPager的Activity,它显示N个片段。 每个片段都在我的ViewPager的自定义适配器中显示ArrayList中对象的属性(扩展FragmentStatePagerAdapter )。 该片段具有(除其他外)一个按钮,该按钮应该删除当前显示的片段并使用setCurrentItem(position, true)滚动到下一个片段,以便如果用户向后滚动,则前一个项目消失。 我通过使用这样的东西(简化)这样做: deleteButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { MyActivity parentActivity = (MyActivity)getActivity(); // First, scroll to next item (smoothly) parentActivity.pager.setCurrentItem(parentActivity.pager.getCurrentItem()+1, true); // Database stuff… doSomeDBOperations(); // Method in Activity that removes the current object (I believe this method is working fine and yes, it calls notifyDataSetChanged()) parent.removeObject(currentObject); } […]