Я просматривал нижнюю панель приложений, и есть замечательная возможность скрыть ее при прокрутке app:hideOnScroll="true"
.Проблема в том, что я не могу понять, как сдвинуть его вверх или вниз, когда все фрагменты перемещаются в .
. Например, обзор настройки: on MainActivity
имеет фрагмент хоста навигации и содержит MainFragment
и DetailFragment
.
У MainFragment
есть RecyclerView
, который при прокрутке скроет нижнюю панель приложений .Если щелкнуть любой из элементов RecyclerView
, он перейдет к DetailFragment
.Но проблема в том, что нижняя панель приложений все еще скрыта , и я хочу, чтобы она отображалась.
И снова, скажем, что:
- StartНаправление имеет
RecyclerView
;нижняя панель приложения видна. - при щелчке по одному из элементов в представлении переработчика, он переходит к другому фрагменту, где он также имеет представление переработчика.Прокрутите окно «Переработчик», и нижняя панель приложения сдвинется вниз.
- Нажмите кнопку «вверх», чтобы вернуться к месту назначения, и вы увидите, что нижняя панель приложения по-прежнему скрыта.
Нет ли методов для нижней панели приложения, чтобы скользить вверх или вниз с компонентом навигации?В MainActivity
я использую следующие коды, чтобы получить кнопку вверх, в onCreate
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mBottomAppBar = findViewById(R.id.bottom_appbar);
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController);
// ...
}
@Override
public boolean onSupportNavigateUp() {
return Navigation.findNavController(this, R.id.nav_host_fragment).navigateUp();
}
В activity_main.xml
, чтобы скрыть нижнюю панель приложений, которую я включил app:hideOnScroll="true"
:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
//...
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
app:navGraph="@navigation/nav_graph" />
<com.google.android.material.bottomappbar.BottomAppBar
android:id="@+id/bottom_appbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
app:hideOnScroll="true"
app:layout_anchor="@+id/nav_host_fragment"
app:layout_anchorGravity="center|bottom" />
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_anchor="@id/bottom_appbar" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Зависимости:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'android.arch.navigation:navigation-fragment:1.0.0-alpha06'
implementation 'android.arch.navigation:navigation-ui:1.0.0-alpha06'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
// ...