#android #android-fragments #android-activity #kotlin #android-toolbar
#Android #android-фрагменты #android-активность #kotlin #android-панель инструментов
Вопрос:
У меня есть действие, панель инструментов и несколько фрагментов, как я могу изменить панель инструментов, переданную фрагменту из MainActivity
я попытался вызвать панель инструментов из fragment1.xml но он показывает две панели инструментов, одну над другой
Здесь я вызвал фрагмент
R.id.menu_acercade -> {
binding.navegacionInferior.selectedItemId = item.itemId
cerrarDrawer()
false
}
R.id.menu_acercade -> {
intercalarIconosMenu(false)
intercalarPagers(true)
binding.navegacionInferior.menu.getItem(2).isCheckable = true //binding.navegacionInferior.menu.getItem(2).isCheckable = true
binding.viewpagerSecciones.setCurrentItem(0, true) //antes 0
true
}
Вот XML фрагмента, в котором я хочу изменить панель действий, но всякий раз, когда я добавляю тег layou, он добавляет другой пример панели действий
<?xml version="1.0" encoding="utf-8"?>
<layout 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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--<include layout="@layout/toolbar_atras" />-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="542dp"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="24dp"
android:src="@drawable/about_logo" />
<android.support.v7.widget.AppCompatTextView
style="@style/Titulo.Principal"
android:layout_marginBottom="24dp"
android:text="@string/menu_opcion_acercade" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="36dp"
android:layout_marginRight="36dp"
android:layout_marginBottom="16dp"
android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."
android:textColor="@color/colorTexto" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="36dp"
android:layout_marginRight="36dp"
android:text="Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
android:textColor="@color/colorTexto" />
</LinearLayout>
<android.support.design.widget.BottomNavigationView
android:id="@ id/navegacionInferior"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="0dp"
android:layout_marginBottom="0dp"
android:background="@color/colorBlanco"
android:paddingEnd="0dp"
android:paddingBottom="0dp"
app:elevation="16dp"
app:itemBackground="@drawable/fondo_navegacioninferior"
app:itemIconTint="@color/colorPrimario"
app:itemTextColor="@color/colorPrimario"
tools:menu="@menu/menu_inferior" />
</LinearLayout>
</layout>
Комментарии:
1. Пожалуйста, добавьте XML-файл
2. @CesarJoelGurrola Проверьте мой ответ, я также привел пример того, какой должна быть последовательность компоновки, а также как обновить заголовок внутри фрагмента.
Ответ №1:
Внутри вашего действия
setSupportActionBar(yourToolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
В вашем фрагменте
(activity as? AppCompatActivity)?.supportActionBar?.title = "Your Title"
Ваш макет действия, вероятно, должен следовать последовательности в приведенном ниже примере
<android.support.design.widget.CoordinatorLayout
android:id="@ id/main_content"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- AppBarLayout is a wrapper for a Toolbar -->
<!-- Note that AppBarLayout expects to be the first child nested within a CoordinatorLayout -->
<android.support.design.widget.AppBarLayout
android:id="@ id/appBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@ id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways" />
</android.support.design.widget.AppBarLayout>
<!-- FrameLayout can be used to insert fragments to display the content of the screen -->
<FrameLayout
android:id="@ id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</android.support.design.widget.CoordinatorLayout>
Комментарии:
1. не сработало, я пробовал (действие как? AppCompatActivity)?.setSupportActionBar(findViewById (панель инструментов)), есть комментарии? Приветствует
2. Могу я узнать , почему вы снова настраиваете панель инструментов в своем фрагменте? Установите панель инструментов только внутри вашего MainActivity, который добавляет / заменяет фрагмент. Пусть фрагмент просто обновит заголовок , вместо настройки панели инструментов, это предотвратит отображение двух панелей инструментов одна над другой
3. это потому, что мне нужно изменить его на (backToolbar) вместо меню, мне нужно: — в основном действии -> MenuToolbar — во фрагменте 1 -> BackToolbar есть идеи, как я могу этого добиться?