Как сделать аппбар с какой-то кнопкой и обработать кнопку с навигацией - PullRequest
1 голос
/ 22 апреля 2020

Я хочу создать пользовательскую панель инструментов, в которую можно добавить две или более кнопок для навигации по другому разделу (например, профиль и область уведомлений) и имени текущего фрагмента. и если я изменю фрагмент и пользователь go на другое место, кнопка «вверх» исчезнет для возврата к последнему месту. сейчас я пытаюсь справиться так:

appbar.xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:appNs="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimaryDark"
    android:id="@+id/toolbar"
    android:paddingStart="20dp"
    android:layoutDirection="rtl"
    android:paddingEnd="10dp"
    android:theme="@style/toolbarTheme">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="my app name"
        android:layout_gravity = "center"
        android:textSize="18sp"
        android:fontFamily="@font/main_bold"
        android:id="@+id/toolbar_title" />

    <ImageView
        android:id="@+id/imgProfile"
        android:src="@drawable/ic_profile"
        android:layout_marginStart="15dp"
        android:layout_gravity="end"
        android:layout_width="25dp"
        android:layout_height="25dp"/>


    <ImageView
        android:id="@+id/imgNotification"
        android:src="@drawable/ic_notification"
        android:layout_width="25dp"
        android:layout_gravity="end"
        android:layout_marginStart="15dp"
        android:layout_height="25dp"/>

</androidx.appcompat.widget.Toolbar>

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>

<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <data>

    </data>

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <include layout="@layout/appbar" />

            <androidx.core.widget.NestedScrollView
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <fragment
                    android:id="@+id/myNavHostFragment"
                    android:name="androidx.navigation.fragment.NavHostFragment"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    app:defaultNavHost="true"
                    app:navGraph="@navigation/navigation" />
            </androidx.core.widget.NestedScrollView>
        </LinearLayout>

    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>

MainActivity.kt:

 setSupportActionBar(toolbar)
        val navController = findNavController(R.id.myNavHostFragment)
        val appBarConfiguration = AppBarConfiguration(navController.graph)
        toolbar.setupWithNavController(navController, appBarConfiguration)

как я могу установить onClickListener для ImageView, который определен в панели приложений. xml? и как я могу сделать текст фрагмента метки настраиваемым? например, измените размер шрифта и цвет текста и ...
(прямо сейчас, когда я go в один фрагмент и пользовательская кнопка вверх, чтобы поддержать фрагмент метки, go исчезнет или исчезнет и go из панели инструментов раздел)

1 Ответ

1 голос
/ 22 апреля 2020

Если вы используете привязку данных, вы можете легко получить доступ к дочерним представлениям включенного представления. Вы должны предоставить id для вашего включенного макета. Просто добавьте привязку данных к включенному макету, а затем используйте его для доступа к его представлениям. В вашем случае в вашей основной деятельности это будет что-то вроде:

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