2017-08-24 64 views
1

基本上我正在寻找在片段的工具栏中放置一个刷新按钮。我的主要活动有四个片段可供处理,但我只想要其中一个片段的刷新图标。从工具栏隐藏ImageView除了一个片段之外

这里是我的工具栏的代码

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/actionBarSize" 
    android:background="?attr/colorPrimary" 
    app:layout_scrollFlags="scroll|enterAlways" 
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 


    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ic_cached_black_24dp" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="20dp" 
     android:tint="@color/colorWhite" 
     android:layout_gravity="right" 
     android:id="@+id/refreshResults" 
     android:textSize="12sp" 
     android:background="@null" 
     android:layout_alignParentEnd="true"/> 


</android.support.v7.widget.Toolbar> 

在我的Activity类我做

refreshResults = (ImageView) findViewById(R.id.refreshResults); 
    refreshResults.setVisibility(View.GONE); 

在我的片段我没有

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ImageView refreshResults = (ImageView) getActivity().findViewById(R.id.refreshResults); 
    refreshResults.setVisibility(View.GONE); 
} 

的我把可见的碎片我想要展示它。

它是一种工作,它不像我想要的那样流畅......有没有一种处理我所需要的东西类型的好方法?

我的主要活动的内幕我:

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new HomeFragment(), "0"); 
    adapter.addFragment(new PickYourProsFragment(), "1"); 
    adapter.addFragment(new ResultsFragment(), "2"); 
    adapter.addFragment(new ChatFragment(), "3"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> fragmentList = new ArrayList<>(); 
    private final List<String> fragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return fragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return fragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     fragmentList.add(fragment); 
     fragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return fragmentTitleList.get(position); 
    } 
} 

这里是任何人解WHO穿越这是后话。

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

    } 

    @Override 
    public void onPageSelected(int position) { 
     if (position == 0) { 
      System.out.println("0"); 
      refreshResults.setVisibility(View.GONE); 
     } else if (position == 1) { 
      System.out.println("1"); 
      refreshResults.setVisibility(View.GONE); 
     } else if (position == 2) { 
      System.out.println("2"); 
      refreshResults.setVisibility(View.VISIBLE); 
     } else if (position == 3) { 
      System.out.println("3"); 
      refreshResults.setVisibility(View.GONE); 
     } 
    } 
+0

查看传呼机适配器。生病更新我的帖子。 – DroiDev

+0

有什么理由不能使用带有图标的菜单项(ActionButton)? – 0X0nosugar

+0

尝试过......它没有拿起我的菜单出于某种原因。但我得到了一个解决方案生病后很快 – DroiDev

回答

1

如果您使用的视图寻呼机的适配器,您可以在父活动覆盖OnPageChangeListenerViewPager在那里你可以隐藏/显示onPageSelected(int position)

+1

感谢您的提示。因为这个我能够找出我上面发布的答案。 – DroiDev