【问题标题】:how to hide "fab" button for a specific fragment activity?如何隐藏特定片段活动的“fab”按钮?
【发布时间】:2019-10-23 07:03:54
【问题描述】:

如何在单击或打开特定片段时隐藏“fab”按钮?

我想从下面的片段中隐藏:

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View newExchange= inflater.inflate(R.layout.new_exchange,container,false);


        recyclerView=newExchange.findViewById(R.id.step1recycleView);
        datalist=new ArrayList<>();
        exchangeAdapter=new NewExchangeAdapter(datalist,getContext());
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerView.setAdapter(exchangeAdapter);
        loadData();

        FloatingActionButton fab =newExchange.findViewById(R.id.fab);
        fab.setVisibility(View.INVISIBLE);//this is generating error on setVisibility

        return newExchange;




    }

在这里我设置了点击按钮

fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
               // Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                 //       .setAction("Action", null).show();

                fragment=new NewExchangeFrag();
                getSupportFragmentManager().beginTransaction().replace(R.id.frame,fragment).commit();
                fab.setVisibility(view.INVISIBLE);//This way also generating error on setVisibility

我也尝试使用fab.hide();,这导致我的应用程序崩溃

什么是正确的方法?

【问题讨论】:

    标签: java android floating-action-button


    【解决方案1】:

    您收到错误是因为您尝试访问工厂但在替换片段之后。我不明白为什么在删除片段后试图隐藏按钮。该按钮不再存在。

    试试

    fab.setVisibility(view.INVISIBLE)

    之前

    fragment=new NewExchangeFrag()

    实际上,您甚至不需要隐藏按钮。

    【讨论】:

    • 也许我的解释有问题,我使用了导航抽屉,点击 fab 按钮时没有打开一个全新的活动,但替换片段和导航标题 fab 和导航抽屉仍然存在,我只想在替换时删除 fab 按钮到 newExchangeFrag()
    • fab.setVisibility(View.Invisible) 在你不希望按钮可见的片段的 onCreatView() 中也是如此。
    • 我确实请看一下我的第一个代码块和那个伪造的错误
    【解决方案2】:

    如果您希望在 Fragment 膨胀时将其隐藏,则应在 NewExchangeFragment 的 xml 文件中设置浮动操作按钮的可见性属性。

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:layout_margin="@dimen/fab_margin"
        android:visibility="gone"
        app:srcCompat="@android:drawable/ic_dialog_email" />
    

    至于按钮被点击时隐藏,你应该在膨胀新的Fragment之前调用setVisibility方法

    fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.setVisibility(View.INVISIBLE);
                fragment = new NewExchangeFrag();
                getSupportFragmentManager().beginTransaction().replace(R.id.frame, fragment).commit();
            }
        });
    

    【讨论】:

      猜你喜欢
      • 2017-03-02
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 2020-07-07
      • 2023-03-02
      • 1970-01-01
      相关资源
      最近更新 更多