在除一个片段之外的所有片段中从 ToolBar 隐藏 ImageView
Hide ImageView from ToolBar in all fragments but one
基本上我希望在片段的工具栏中放置一个刷新按钮。我的主 activity 有四个要处理的片段,但我只想要其中之一的刷新图标。
这是我的工具栏代码
<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>
在我的Activityclass里面,我做到了
refreshResults = (ImageView) findViewById(R.id.refreshResults);
refreshResults.setVisibility(View.GONE);
我在 Fragments 里面做的
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ImageView refreshResults = (ImageView) getActivity().findViewById(R.id.refreshResults);
refreshResults.setVisibility(View.GONE);
}
我会将 VISIBLE 放在我想要显示的片段上。
它有点工作,它不像我想要的那么顺利...有没有好的方法来处理我正在寻找的需求类型?
在我的主要 activity 里面,我得到了:
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);
}
}
这是为以后遇到此问题的任何人提供的解决方案。
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);
}
}
如果您正在为适配器使用视图寻呼机,您可以在父级 activity 中为 ViewPager
覆盖 OnPageChangeListener
,您可以在其中 hide/show onPageSelected(int position)
基本上我希望在片段的工具栏中放置一个刷新按钮。我的主 activity 有四个要处理的片段,但我只想要其中之一的刷新图标。
这是我的工具栏代码
<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>
在我的Activityclass里面,我做到了
refreshResults = (ImageView) findViewById(R.id.refreshResults);
refreshResults.setVisibility(View.GONE);
我在 Fragments 里面做的
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ImageView refreshResults = (ImageView) getActivity().findViewById(R.id.refreshResults);
refreshResults.setVisibility(View.GONE);
}
我会将 VISIBLE 放在我想要显示的片段上。
它有点工作,它不像我想要的那么顺利...有没有好的方法来处理我正在寻找的需求类型?
在我的主要 activity 里面,我得到了:
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);
}
}
这是为以后遇到此问题的任何人提供的解决方案。
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);
}
}
如果您正在为适配器使用视图寻呼机,您可以在父级 activity 中为 ViewPager
覆盖 OnPageChangeListener
,您可以在其中 hide/show onPageSelected(int position)