根据可见片段处理 activity 工具栏可见性
Handling activity toolbar visibility according to visible fragment
在我的 android 应用程序中,我有一个 activity 和许多片段。但是,我只想显示某些片段的工具栏,对于其他片段,我希望该片段是全屏的。执行此操作的最佳和推荐方法是什么(根据可见片段显示和隐藏 activity 工具栏)?
由于您想要不同的表示形式,因此您的每个片段都应该(当您需要时)拥有它们自己的 toolbar
。
因此您的 Activity
的布局将有一个简单的 fragment_container。
如果您使用的是 viewPager,那么您可以仅使用 MainActivity 中的单个工具栏来完成此操作
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==YourFragmentPosition)
{
toolbar.setVisibility(View.VISIBLE);
}
else{
toolbar.setVisibility(View.GONE);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
});
我更喜欢为此使用界面。
public interface ActionbarHost {
void showToolbar(boolean showToolbar);
}
使您的 activity 实现 ActionbarHost
并覆盖 showToolbar as。
@Override
public void showToolbar(boolean showToolbar) {
if (getSupportActionBar() != null) {
if (showToolbar) {
getSupportActionBar().show();
} else {
getSupportActionBar().hide();
}
}
}
现在从你的片段初始化 onAttach()
private ActionbarHost actionbarHost;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof ActionbarHost) {
actionbarHost = (ActionbarHost) context;
}
}
如果你想从片段中隐藏操作栏调用 actionbarHost.showToolbar(false);
。
if (actionbarHost != null) {
actionbarHost.showToolbar(false);
}
此外,我建议在 onDetach()
中再次展示它
@Override
public void onDetach() {
super.onDetach();
if (actionbarHost != null) {
actionbarHost.showToolbar(true);
}
}
在我的 android 应用程序中,我有一个 activity 和许多片段。但是,我只想显示某些片段的工具栏,对于其他片段,我希望该片段是全屏的。执行此操作的最佳和推荐方法是什么(根据可见片段显示和隐藏 activity 工具栏)?
由于您想要不同的表示形式,因此您的每个片段都应该(当您需要时)拥有它们自己的 toolbar
。
因此您的 Activity
的布局将有一个简单的 fragment_container。
如果您使用的是 viewPager,那么您可以仅使用 MainActivity 中的单个工具栏来完成此操作
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if(position==YourFragmentPosition)
{
toolbar.setVisibility(View.VISIBLE);
}
else{
toolbar.setVisibility(View.GONE);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
});
我更喜欢为此使用界面。
public interface ActionbarHost {
void showToolbar(boolean showToolbar);
}
使您的 activity 实现 ActionbarHost
并覆盖 showToolbar as。
@Override
public void showToolbar(boolean showToolbar) {
if (getSupportActionBar() != null) {
if (showToolbar) {
getSupportActionBar().show();
} else {
getSupportActionBar().hide();
}
}
}
现在从你的片段初始化 onAttach()
private ActionbarHost actionbarHost;
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof ActionbarHost) {
actionbarHost = (ActionbarHost) context;
}
}
如果你想从片段中隐藏操作栏调用 actionbarHost.showToolbar(false);
。
if (actionbarHost != null) {
actionbarHost.showToolbar(false);
}
此外,我建议在 onDetach()
@Override
public void onDetach() {
super.onDetach();
if (actionbarHost != null) {
actionbarHost.showToolbar(true);
}
}