Перезагрузите навигацию, просмотрите контент, нажав идентификатор в навигации. - PullRequest
0 голосов
/ 13 октября 2019

В настоящее время я работаю над приложением, в котором я хотел бы изменить нижнюю часть navigationView, нажимая картинку в заголовке того же navigationView.

My navigationViewэто сборка с макетом заголовка и другой макет для нижней части. Заголовок содержит несколько фотографий. Предполагается, что каждая картинка приводит к разной компоновке для приведенной ниже части.

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

На данный момент домашняя категория отображается при открытии navigationView, и я не понимаю, как я должен перезагрузить нижнюю часть, нажаврис.

Это часть кода в mainActivity, в onCreate

        //ACTIONBAR
    Toolbar mToolbar = findViewById(R.id.toolbar);
    setSupportActionBar(mToolbar);
    assert getSupportActionBar() != null;
    getSupportActionBar().setTitle("");

    //NAVIGATION VIEW
    DrawerLayout drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view_home);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();
    navigationView.setNavigationItemSelectedListener(this);

Смотрите, там загружается идентификатор nav_view_home и нажимаетсярис в этом заголовке navigationView, я хотел бы видеть изменение нижней части. На данный момент я подготовил другой навигационный вид, созданный с тем же заголовком: - nav_view_movie - nav_view_music - ...

Код макета ящика для дома

<android.support.v4.widget.DrawerLayout
    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"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/activity_soundsorganisation"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view_home"
        android:layout_width="250dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:theme="@style/NavigationTheme"
        android:fitsSystemWindows="true"
        android:background="#6b6b6b"
        app:headerLayout="@layout/format_soundsorganisationdrawerheader"
        app:menu="@menu/categorie_menu"
        app:itemTextColor="@drawable/nav_view_item_textcolor"
        app:itemBackground="@drawable/nav_view_item_background" >

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

    </android.support.design.widget.NavigationView>

</android.support.v4.widget.DrawerLayout>

Код раскладки ящика для фильма

<include
    layout="@layout/activity_soundsorganisation"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<android.support.design.widget.NavigationView
    android:id="@+id/nav_view_home"
    android:layout_width="250dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:theme="@style/NavigationTheme"
    android:fitsSystemWindows="true"
    android:background="#6b6b6b"
    app:headerLayout="@layout/format_soundsorganisationdrawerheader"
    app:menu="@menu/categorie_menu"
    app:itemTextColor="@drawable/nav_view_item_textcolor"
    app:itemBackground="@drawable/nav_view_item_background" >

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

</android.support.design.widget.NavigationView>

Код заголовка для навигации ViewView

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#303030"
    android:gravity="center"
    android:orientation="horizontal"
    android:theme="@style/ThemeOverlay.AppCompat.Dark">

    <ImageView
        android:id="@+id/imageView_pic_movie"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:contentDescription="@string/nav_header_desc"
        android:paddingEnd="10dp"
        android:paddingStart="10dp"
        app:srcCompat="@drawable/pic_movie" />

    <ImageView
        android:id="@+id/imageView_pic_audio"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:contentDescription="@string/nav_header_desc"
        android:paddingEnd="10dp"
        android:paddingStart="10dp"
        app:srcCompat="@drawable/pic_audio" />
</LinearLayout>

Итак, как выВидите, макет дома состоит из заголовка и categorie_menu. На данный момент я попытался перезагрузить весь макет при нажатии на рис. С идентификатором imageView_pic_movie, используя другой макет из того же заголовка и другое меню с именем categorie_menu_movie, но безуспешно.

Возможно, это невозможно,а может это тоже не самый лучший способ? Может быть, есть другой способ использовать тот же макет, но просто перезагрузить меню вместо всех макетов?

В любом случае, я не понимаю, как я должен это делать.

МожетВы мне поможете, пожалуйста?

1 Ответ

0 голосов
/ 13 октября 2019

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

Так что просто нужно сделать метод onClick и установить группу видимой или невидимой при нажатии накартинка или другое.

Источник: Изменение элементов NavigationView при входе пользователя в систему

...