当前位置: 首页 > 知识库问答 >
问题:

如何在特定片段中隐藏BottomNavision bar(Botton Naviational Bar Active)

糜俊彦
2023-03-14

我知道我不是第一个问这个问题的人,但是我已经参考了很多关于这个问题的帖子,但是我的问题没有得到解决。

我想做的是在我的MainActivity(底部导航栏活动)我有底部导航栏,在这个MainActivity我有卡片视图如果我点击卡片视图,我需要显示该片段中的另一个片段,我想隐藏底部导航栏。当我导航回MainActivity botoom导航栏时,导航栏应该在那里。

在我的情况下,Alarm.java是我想隐藏底部导航栏的片段。

Alarm.java

public class Alarm extends Fragment {

    private OnFragmentInteractionListener mListener;

    public Alarm() {

    }

    public static Alarm newInstance(String param1, String param2) {
        Alarm fragment = new Alarm();
        Bundle args = new Bundle();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {

        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_alarm, container, false);
    }

    public void onButtonPressed(Uri uri) {
        if (mListener != null) {
            mListener.onFragmentInteraction(uri);
        }
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnFragmentInteractionListener) {
            mListener = (OnFragmentInteractionListener) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        mListener = null;
    }

    public interface OnFragmentInteractionListener {
        void onFragmentInteraction(Uri uri);
    }
}

共有2个答案

夏理
2023-03-14

我曾尝试过@Suleyman的方法,但对我无效。最简单的解决方案是在MainActivity中使用公共静态方法,并从要隐藏底部导航栏的片段引用它。

不要忘记将navView初始化为公共静态

在您的main活动中

    public static void hideBottomNav(){
        navView.setVisibility(View.GONE);
    }

    public static void showBottomNav(){
        navView.setVisibility(View.GONE);
    }

在您的我的片段

    @Override
    public void onResume() {
        super.onResume();
        MainActivity.hideBottomNav();
    }

    @Override
    public void onStop() {
        super.onStop();
        MainActivity.showBottomNav();
    }

公孙河
2023-03-14

在您的Mainactive中,您可以实现两个方法,它们将负责显示和隐藏您的BottomNavigationView。例如,这两个方法对它上下滑动进行动画处理:

private void hideBottomNavigationView(BottomNavigationView view) {
    view.clearAnimation();
    view.animate().translationY(view.getHeight()).setDuration(300);
}

public void showBottomNavigationView(BottomNavigationView view) {
    view.clearAnimation();
    view.animate().translationY(0).setDuration(300);
}

Mainactive中,您在打开CardView之前调用隐藏,并在onCreateonResume中调用show

编辑:

但是,我认为一个更干净的方法可能是在您的片段中创建一个接口:

public interface OnCardViewOpenedInterface{
    void onOpen(); // hide bottom bar when photo is opened
    void onClose(); // show bottom bar when photo is opened
}

并在片段的onStopon resume,调用这些方法:

@Override
public void onStop() {
    super.onStop();
    mListener.onClose();
}

@Override
public void onResume() {
    super.onResume();
    mListener.onOpen();
}

然后在您的Mainactive中实现接口,覆盖方法onOpen()onClole()并在内部调用您的隐藏show方法。

它们可能都有效,也许第二个过于复杂,只是我更喜欢它。

 类似资料:
  • 我正在开发包含2个片段的应用程序,我想根据需要显示隐藏。下面的代码有一个简单的例子来说明我的问题。这个简单的Fragmentactivity包含一个按钮和一个listfragment。 这个简单的例子完美无瑕。但我不满足于展示隐藏片段。如果删除布局。设置可见性(View.GONE);然后从代码中选择ft.hide(f);不会隐藏碎片。事实上,我们不是在隐藏片段,而是在隐藏容器。 我的问题是,这是一

  • 我使用的是Hybris版本20.05(Cloud)。backoffice树中有一个“CloudCommons”字段。但是,如果登录员工的组中有“TestRabia”,我不希望用户看到“CloudCommons”字段。但是仍然拥有“TestRabia(UserGroup)”的用户会看到“CloudCommons”字段。 为此:。。。后台后台配置。xml我添加了以下代码: 我怎样才能解决这个问题?非常

  • 在我的android应用程序中,当用户聚焦SearchView时,我希望底部的菜单栏消失(这也会弹出软键盘)。当SearchView失去焦点时,我想再次显示底部的导航栏。 我尝试过使用,视图确实隐藏或显示,但由于某种原因,它总是保留其高度。下面是我BottomNavigationView的代码: 处理隐藏/显示导航栏的代码: BottomNavigationView由线性布局控制,如下所示:

  • 问题内容: 我有一个使用服务几个片段。每个都是具有以下布局的: 开始活动时,将显示软键盘。为了解决这个问题,我在片段中做了以下操作: 我将传入的参数保存为一种访问主要活动的窗口令牌的方式。这可以正常运行,但是不会打扰到in 的键盘。 最初,我尝试使用膨胀布局代替,即: 但这引发了,大概是因为该片段本身不是活动,并且没有唯一的窗口令牌吗? 是否可以从片段中隐藏软键盘,还是应该在中创建一个方法并从片段

  • 我试图从活动中隐藏/显示片段中的按钮,但它给了我以下异常。 android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触摸其视图。 家庭活动 类别片段 代码太大,无法在此处发布。这就是为什么我只在发现问题的地方发布代码。 我能够获得新设计按钮实例。令我震惊的是,如果尝试玩按钮实例(可见/消失),它会给我上述异

  • 我有一个片断,它包含了ImgaeView(s)在它的XML中,我从这些图像导航到另一个片断,但问题是底页保持打开,当我导航到另一个片断时,如何使它折叠? 这是底片的图片 在这里,我导航到另一个片段,但底部页仍然显示在屏幕上 下面是片段内部的代码 所以我的问题是: 在我导航到另一个片段后,如何使它崩溃?