首页 > 解决方案 > 通过在 navigationView 中按 id 重新加载 navigationView 内容

问题描述

我目前正在开发一个应用程序,我想navigationView通过在 a 的标题中按下图片来更改 a 的下部navigationView

MynavigationView是使用标题布局和下部的另一种布局构建的。标题包含一些图片。每张图片都应该导致下面部分的不同布局。

我准备了几个不同的菜单,分别对应不同的类别。每个菜单都集成在具有唯一 ID 的不同布局中。

目前,打开时会显示主页类别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加载了 id,并且通过在此 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>

navigationView 布局的标头代码

    <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的菜单组成的另一个布局,在按下带有 id的图片时重新加载完整的布局。categorie_menu_movie

也许这是不可能的,或者这也不是最好的方法?也许还有另一种方法可以使用相同的布局,但只需重新加载菜单而不是所有布局?

无论如何,我不明白我应该怎么做。

你能帮我吗 ?

标签: javanavigationview

解决方案


好的,所以我的做法似乎是一个糟糕的主意。经过一些研究,我们似乎可以对菜单中的项目或组使用可见真或可见假。

因此,只需执行一个 onClick 方法并在单击图片或其他图片时将组设置为可见或不可见。

来源:用户登录时更改 NavigationView 项目


推荐阅读