#android
#Android
Вопрос:
У меня есть навигация по нижней панели с панелью инструментов, прикрепленной к верхней части, и я пытаюсь отобразить кнопку воспроизведения меню. Но вместо того, чтобы отображаться на нижней панели инструментов, он отображается на главной панели инструментов, где находится меню настроек.
CoordinatorLayout coordinatorLayout = (CoordinatorLayout) v.findViewById(R.id.bottom_sheet_coor);
final View bottomSheet = coordinatorLayout.findViewById(R.id.bottom_sheet);
final BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(bottomSheet);
Toolbar toolbar = (Toolbar) coordinatorLayout.findViewById(R.id.bottomToolBar);
setHasOptionsMenu(true);
Приведенный выше код находится во фрагменте, вот методы меню опций:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_play, menu);
}
Вот файл меню:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@ id/action_play_bar"
android:orderInCategory="100"
android:icon="@drawable/ic_play_arrow"
android:title="@string/play_button"
app:showAsAction="always" />
</menu>
И это xml для навигации по нижнему листу, где я хочу, чтобы отображалась панель инструментов:
<android.support.v7.widget.Toolbar
android:id="@ id/bottomToolBar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:background="@color/colorPrimary">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@ id/toolbar_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginBottom="16dp"
android:gravity="center_horizontal"
android:text="Play now!"
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>
</android.support.v7.widget.Toolbar>
Любая помощь относительно того, почему она отображается на панели инструментов главного навигационного ящика, а не на нижней панели инструментов, была бы весьма признательна
Ответ №1:
Вы здесь что-то путаете. Вот почему вы получаете это.
вот пример блока кода. поместите его в любой FrameLayout.
<android.support.design.widget.BottomNavigationView
android:id="@ id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="?android:attr/windowBackground"
app:menu="@menu/navigation" />
здесь app:menu="@menu/navigation"
должно быть предоставлено меню для этого виджета точно так же, как DrawerLayout
. Вам не нужно явно раздувать это. Теперь поместите свой пункт меню воспроизведения в это меню навигации и вуаля!!
onCreateOptionsMenu(..)
используется для добавления меню на панель инструментов
Надеюсь, это поможет!!!
Ответ №2:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setHasOptionsMenu(true)
}
Вы не написали этот переопределенный метод во фрагменте.
Надеюсь, это поможет!!!