首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >android在特定片段中隐藏工具栏

android在特定片段中隐藏工具栏
EN

Stack Overflow用户
提问于 2015-03-19 00:58:32
回答 10查看 47.3K关注 0票数 56

我有一个问题,我不知道该怎么解决。如何在特定的片段中隐藏工具栏,我已经在互联网上搜索过了,我发现的是交流活动,片段可以解决这个问题。但它对我一点都不起作用,下面是我的代码:

main_activity:

代码语言:javascript
复制
public class MainActivity extends ActionBarActivity implements like_frag.OnHideToolbar{

....

public void onHidingToolbar(int position){
        Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
        if(toolbar == null){
            getSupportActionBar().hide();
        }else{
            getSupportActionBar().hide();
        }
    }

like_frag.java

代码语言:javascript
复制
public class like_frag extends Fragment {

    OnHideToolbar mCallback;
    Toolbar toolbar;

    public interface OnHideToolbar {
        public void onHidingToolbar(int position);
    }

    public void onAttach(Activity activity){

        try{
            mCallback = (OnHideToolbar) activity;
        }catch(ClassCastException e){
            throw new ClassCastException(activity.toString() + "error implementing");
        }
    }
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View rootView = inflater.inflate(R.layout.swipefrag, container, false);

        toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar);

        return rootView;
    }

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
    }
}

提前谢谢。

我在工具栏里有一个抽屉。

EN

回答 10

Stack Overflow用户

发布于 2016-07-05 14:11:55

将此代码放在要隐藏工具栏的片段中...

代码语言:javascript
复制
 @Override
public void onResume() {
    super.onResume();
    ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
}
@Override
public void onStop() {
    super.onStop();
    ((AppCompatActivity)getActivity()).getSupportActionBar().show();
}
票数 119
EN

Stack Overflow用户

发布于 2015-07-16 03:03:14

在片段的onCreate方法调用中:

((AppCompatActivity) getActivity()).getSupportActionBar().hide();

AppCompateActivity替换为您使用的activity类。

编辑的

您可以简单地使用onResume方法来调用hide(),使用onStop方法来调用show(),正如一些注释中所建议的那样。

代码语言:javascript
复制
@Override
public void onResume() {
    super.onResume();
    ((AppCompatActivity)getActivity()).getSupportActionBar().hide();
}

@Override
public void onStop() {
    super.onStop();
    ((AppCompatActivity)getActivity()).getSupportActionBar().show();
}
票数 43
EN

Stack Overflow用户

发布于 2019-09-20 19:27:43

如果您使用的是新的Navigation Component,请在设置工具栏时添加此内容

代码语言:javascript
复制
navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
   @Override
   public void onDestinationChanged(@NonNull NavController controller,
           @NonNull NavDestination destination, @Nullable Bundle arguments) {
       if(destination.getId() == R.id.full_screen_destination) {
           toolbar.setVisibility(View.GONE);
           bottomNavigationView.setVisibility(View.GONE);
       } else {
           toolbar.setVisibility(View.VISIBLE);
           bottomNavigationView.setVisibility(View.VISIBLE);
       }
   }
});

对于Kotlin,您可以执行以下操作:

代码语言:javascript
复制
navController.addOnDestinationChangedListener { _, destination, _ ->
    if(destination.getId() == R.id.full_screen_destination) {
        toolbar.setVisibility(View.GONE)
        bottomNavigationView.setVisibility(View.GONE);
    } else {
        toolbar.setVisibility(View.VISIBLE)
        bottomNavigationView.setVisibility(View.VISIBLE);
    }
}
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29128162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档