1

有没有人看过这个问题?这只是使用姜饼设备的模拟器,但我的应用程序有ViewPager,当我从初始视图滑动到另一个视图并回到初始视图时,它看起来像另一组图标叠加在初始图标Actionbar(使用ActionbarSherlock):叠加的动作条图标

初始:

enter image description here

滑动后(通知图标是更厚):

enter image description here

这不会发生在仅ICS +设备姜饼。

ViewPager:

public class Main extends SherlockFragmentActivity 
{ 
    private static List<Integer> mIds; 
    private static SparseArray<Fragment> mPageReferenceMap = new SparseArray<Fragment>(); 

    @Override 
    public void onCreate(final Bundle icicle) 
    {  
     super.onCreate(icicle); 

     setContentView(R.layout.main); 

     mViewPager = (ViewPager)findViewById(R.id.viewpager); 
     mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager()); 
     mViewPager.setAdapter(mMyFragmentPagerAdapter); 

     mViewPager.setOnPageChangeListener(new OnPageChangeListener() { 

      @Override 
      public void onPageSelected(int position) { 
       GetListingFragment().StopAnimation(); //needed to add this because the ActionView was showing on the other views when swiping 
      } 

      @Override 
      public void onPageScrolled(int position, float offset, int offsetPixel) { 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 

     mIds = new ArrayList<Integer>(); 

     mIds.add(0); 
     mIds.add(1); 
     mIds.add(2); 
    } 

    @Override 
    public void onResume() 
    { 
     super.onResume(); 
     ActivityCompat.invalidateOptionsMenu(this); 
    } 

    private ListingFragment GetKeywordsFragment() 
    {  
     ListingFragment lf = (ListingFragment)getSupportFragmentManager().findFragmentById(R.id.fragmentListing); 

     if (lf == null) 
     { 
      final MyFragmentPagerAdapter fpa = (MyFragmentPagerAdapter)mViewPager.getAdapter(); 
      lf = (ListingFragment)fpa.getFragment(0); 
     } 

     return lf; 
    } 

    private static class MyFragmentPagerAdapter extends FragmentStatePagerAdapter { 

     public MyFragmentPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int index) { 
      if (index == 0) 
      { 
       final ListingFragment lf = ListingFragment.newInstance(); 
       mPageReferenceMap.put(index, lf); 
       return lf; 
      } 
      else 
      { 
       final DetailFragment df = DetailFragment.newInstance(mIds.get(index)); 
       mPageReferenceMap.put(index, df); 
       return df; 
      } 
     } 

     public Fragment getFragment(int key) { 
      return mPageReferenceMap.get(key); 
     } 

     @Override 
     public int getCount() { 
      return 3; 
     } 
    } 
} 

回答

1

请看看这个issue在ActionBarSherlock Github上。这个问题是已知的,目前尚未修复。

+0

啊,谢谢你的支持。这让我疯狂。希望它能很快得到解决。我可能会编写一些逻辑来检查SDK版本,而不是为ICS之前的设备设置菜单动画。 – 2013-03-03 04:39:04

+1

是的,这可能是目前最好的解决方法。目前似乎没有任何关于此问题的工作,但希望很快能够解决。 – 2013-03-03 04:48:03