在我的android应用程序中,我有一个活动和很多片段。但是,我只想显示某些片段的工具栏,而对于其他片段,我希望该片段为全屏显示。最好的推荐方法是什么(根据可见片段显示和隐藏活动工具栏)?
答案 0 :(得分:0)
由于您需要不同的表示形式,因此每个片段都应(当需要时)具有自己的toolbar
。
因此,您的Activity
的布局将具有一个简单的fragment_container。
答案 1 :(得分:0)
如果您使用的是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) {
});
答案 2 :(得分:0)
我更喜欢使用接口。
public interface ActionbarHost {
void showToolbar(boolean showToolbar);
}
使您的活动实现ActionbarHost
,并将showToolbar替换为。
@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);
}
}