Articles of android viewpager

PagerTabStrip选项卡左对齐

我正在使用PagerTabStrip来设置滑动标签。 但是,当我设置三个选项卡时,它会显示中心的第一个选项卡,因此用户乍看之下无法看到所有三个选项卡。 我怎样才能将它们对齐到左边? 我想像这样向左移动标签。 我试过引力,但没有运气。 pagerTabStrip.setGravity(Gravity.LEFT); 这是MainActivity的代码。 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewPager viewPager = (ViewPager) findViewById(R.id.pager); PagerTabStrip pagerTabStrip = (PagerTabStrip) findViewById(R.id.pager_tab_strip); FragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter( getSupportFragmentManager()); viewPager.setAdapter(fragmentPagerAdapter); pagerTabStrip.setGravity(Gravity.LEFT); } 和 MyFragmentPagerAdapter extends FragmentPagerAdapter { private final String[] pageTitle = { “Entry”, “History”, “Report” }; public MyFragmentPagerAdapter(FragmentManager fragmentManager) { super(fragmentManager); } […]

PagerAdapter.notifyDataSetChanged不刷新片段

我的Activity包含一个ViewPager和它的自定义Adapter ,它扩展了FragmentStatePagerAdapter 。 ViewPager包含3个片段 用于从ViewPager中删除片段的代码 MainActivity public void deleteElement(){ final int currentItem = mViewPager.getCurrentItem(); mPagerAdapter.removeItem(currentItem); mPagerAdapter.notifyDataSetChanged(); } CustomPagerAdapter private ArrayList data; public void removeItem(int index){ data.remove(index); } 删除中间Fragment (索引1)时: 从data我删除正确的item 。 问题是我(我猜) Fragment 3在notifyDataSetChanged之后被删除,并且当前Fragment仍然是用户看到的片段,并且正在加载的数据来自SavedInstance包 因此,最终结果是用户仍然看到他试图移除的相同Fragment ,这对他来说有点不好意思。 想法?

无法通过从右向左滑动关闭NavigationDrawer

我一直试图解决我遇到的问题,即我无法通过从右向左滑动来关闭NavigationDrawer,但没有成功。 通过从屏幕左边缘向右滑动打开它可以正常工作。 我目前正在尝试合并来自developer.android.com网站的NavigationDrawer示例和ViewPager示例,一切正常,但不是关闭导航抽屉。 我希望有人能帮助我。 这是我的代码: package com.example.android.effectivenavigation; import android.app.ActionBar; import android.app.FragmentTransaction; import android.app.SearchManager; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.GravityCompat; import android.support.v4.view.ViewPager; import android.support.v4.widget.DrawerLayout; import android.util.Log; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; […]

ViewPager里面的片段问题

我有查看寻呼机的问题,它在一些片段内。 要使用视图寻呼机,我正在使用FragmentPagerAdapter。 确定我收到了java.lang.IllegalStateException:在尝试运行我的应用程序时递归进入executePendingTransactionsexception。 大多数人都认为将FragmentPagerAdapter放在其他片段中是不可能的,所以如果这个问题无效,我很抱歉。 我只是希望有人对这个问题及其可能的解决方案有一些新的想法。 PS我有一个建议在AsyncTask中设置适配器(我可以澄清这种情况,如果有人需要它),但这个解决方案有一些与恢复这样的片段状态相关的错误,所以它对我有用。

android viewpager更改适配器

我正在使用ViewPager开发一个用于横向滚动表的应用程序,有时我需要更改适配器以加载一组不同的表。 我试着做以下事情: mViewPager.setAdapter(new pagerAdapterPushed(getSupportFragmentManager())); mViewPager.getAdapter().notifyDataSetChanged(); indicator.setViewPager(mViewPager); indicator.invalidate(); mViewPager.invalidate(); 但它总是重新加载以前的数据。 是否可以更改ViewPager的适配器?

ViewPager没有显示任何内容

我用自定义视图寻呼机适配器创建视图寻呼机但是当我运行项目时我看不到任何东西 public class CustomAdapter extends PagerAdapter { private List newsObjects; private Activity mActivity; private LayoutInflater inflater; private ImageLoaderConfiguration imageConfig; private ImageLoader imageLoader = ImageLoader.getInstance(); public CustomAdapter(List newsObjects, Activity mActivity) { super(); Log.d(“Con :”, “structor”); this.newsObjects = newsObjects; this.mActivity = mActivity; imageConfig = new ImageLoaderConfiguration.Builder( mActivity.getApplicationContext()).build(); imageLoader.init(imageConfig); } @Override public int getCount() { return this.newsObjects.size(); } […]

退出转换前更新源活动

我需要有关活动之间转换的帮助: 我有两个活动A和B,并且都有一个具有相同图像列表的ViewPager。 每个页面都有一个ImageView,其transitionName等于image_x,其中x是页面索引。 A启动活动B调用ActivityOptionsCompat.makeSceneTransitionAnimation并且输入转换完全正常。 问题如下:当我关闭活动B时,退出转换不会在B的相同位置初始化活动A的视图寻呼机。 当用户关闭B时,后者在结果中设置当前页面位置。 在活动A的onActivityResult中,我调用setCurrentItem ,行为显示在gif中。 有没有办法在退出转换开始之前更新活动A?

同一活动中的导航抽屉和视图寻呼机

我试图在同一活动中实现导航抽屉和视图寻呼机。 导航抽屉工作正常,但视图寻呼机不工作,我也在导航抽屉打开时右侧滑动指针(空指针在android。支持.v4。小部件.GrawerLayout.isContentView(DrawerLayout.java:840)。我我附加了主要的xml布局和代码。 活动类如下 public class MainActivity extends Activity { private DrawerLayout mDrawerLayout; private ListView mDrawerList; private ActionBarDrawerToggle mDrawerToggle; private CharSequence mDrawerTitle; private CharSequence mTitle; private String[] mPlanetTitles; private MainActivity mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = this; ViewPager vp = (ViewPager) findViewById(R.id.viewpager); CustomPagerAdapter adapter = new CustomPagerAdapter(mContext); vp.setAdapter(adapter); vp.setPageTransformer(false, new ViewPager.PageTransformer() […]

IllegalStateException:无法更改片段的标签是android:switcher now android:switcher

我的活动使用TabLayout + ViewPager 。 此处的选项卡和页面数量是动态的,具体取决于从服务器获取的数据。 崩溃是通过Crashlytics报道的,我无法复制它。 我的活动代码: @Override protected void onCreate(Bundle savedInstanceState) { boolean isAppRestarting = PrefUtils.getBoolean(“app_restarting”, false); if (isAppRestarting) { super.onCreate(null); this.savedInstanceState = null; } else { super.onCreate(savedInstanceState); this.savedInstanceState = savedInstanceState; } initSlidingTabs(); fetchSomeData(); // see onDataFetched() below } private void initSlidingTabs() { List sdsTabs = new ArrayList(); Logger.i(“There is saved instance state”); ArrayList […]

android:根据ViewPager中的每个片段更新ActionBar项目?

我在Action Bar中有一个标记/书签按钮,我希望根据ViewPager查看哪个Fragment来打开或关闭。 如果用户在ViewPager中标记片段,则将其设置为启用。 当用户滑动到下一个时,我希望操作栏按钮更新为未标记。 现在,我可以通过拥有两个菜单项来更改按钮的状态,并隐藏一个,单击时显示一个。 这是我的Activity中切换Action Bar按钮的代码: public boolean onOptionsItemSelected(MenuItem item) { int currentItem = mPager.getCurrentItem(); switch (item.getItemId()) { case R.id.menu_flag: mFlagged = true; supportInvalidateOptionsMenu(); return true; case R.id.menu_unflag: mFlagged = false; supportInvalidateOptionsMenu(); return true; } } @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem item_flag = menu.findItem(R.id.menu_flag); MenuItem item_unflag = menu.findItem(R.id.menu_unflag); if (mFlagged) { //If […]