Как скрыть кнопку с плавающим действием из макета нижней панели приложения - PullRequest
0 голосов
/ 20 мая 2019

Я создаю Нижнюю панель приложений с плавающей кнопкой действия.Панель приложения является частью моего основного действия, и я хочу скрыть FAB для некоторых фрагментов в действии.

Я уже пробовал «View.GONE» и «fab.hide ()».Затем я попытался скрыть Fab с помощью следующей функции:

    private fun hideFloatingActionButton() {
        val params = fab.layoutParams as CoordinatorLayout.LayoutParams
        val behavior = params.behavior as FloatingActionButton.Behavior?

        if (behavior != null) {
            behavior.isAutoHideEnabled = false
        }

        params.anchorId = View.NO_ID;
        params.width = 0;
        params.height = 0;
        fab.layoutParams = params
        fab.hide()
    }

My layout.xml:

    <androidx.coordinatorlayout.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context=".MainActivity"
        android:background="@color/backPrimary"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    ...

         content
    ...

    <com.google.android.material.bottomappbar.BottomAppBar
            android:id="@+id/bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            style="@style/Widget.MaterialComponents.BottomAppBar"
            app:navigationIcon="@drawable/ic_burger_menu"
            app:fabAlignmentMode="end"
    />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/start_project_day"
            app:srcCompat="@drawable/ic_next"
            app:layout_anchor="@id/bar"
    />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

1 Ответ

0 голосов
/ 20 мая 2019

Только что протестирован с методом fab.hide (), и он работает. «Логика», чтобы скрыть сказку, должна присутствовать в активности, а не во фрагменте. Следующая логика установлена ​​в упражнении, а часть hide находится в конце ветви else.

navController.addOnDestinationChangedListener { controller, destination, _ ->

        bar.animate().translationY(0f)


        // First page is main menu
        if(controller.graph.startDestination == destination.id){


            bar.navigationIcon = icon
            bar.fabAlignmentMode = BottomAppBar.FAB_ALIGNMENT_MODE_CENTER
            fab?.setImageDrawable(getDrawable(R.drawable.ic_local_wtf))

        }else{

            // Hide navigation drawer icon
            bar.navigationIcon = null

            // Move FAB from the center of BottomAppBar to the end of it
            bar.fabAlignmentMode = BottomAppBar.FAB_ALIGNMENT_MODE_END



            // Replace the action menu
            //bar.replaceMenu(bottomappbar_menu_secondary)
            invalidateOptionsMenu()

            // Change FAB icon
            fab?.setImageDrawable(getDrawable(R.drawable.ic_reply_white_24dp))
            fab.hide()
        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...