有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带导航抽屉的java bottomnavigationview

image

我想实现一个底部导航视图,其中导航抽屉作为内部元素

image2

我设法创建了一个bottomnavigationview和一个导航抽屉,但我不知道如何将导航抽屉放入bottomnavigationview

我的主要活动是java:

public class MainActivity extends AppCompatActivity {

private static final String TAG = "debinf MainActivity";

//public static final String FRAGMENT_KEY = "fragment";

private BottomNavigationView bottomNavigationView;
private NavigationView navigationView;
private DrawerLayout drawerLayout;
private NavController navController;

private AppBarConfiguration appBarConfiguration;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Log.i(TAG, "onCreate: ");

    bottomNavigationView = (BottomNavigationView) findViewById(R.id.main_bottom_nav);
    navigationView = (NavigationView) findViewById(R.id.main_sidebar);
    drawerLayout = (DrawerLayout) findViewById(R.id.main_drawer);

    setupNavigation();

}

private void setupNavigation() {
    Log.i(TAG, "setupNavigation: ");
    navController = Navigation.findNavController(this, R.id.main_fragment);
    appBarConfiguration =
            new AppBarConfiguration.Builder(R.id.navigation_friends,R.id.navigation_order,R.id.navigation_home,R.id.navigation_groups,R.id.navigation_settings,R.id.navigation_profile,R.id.navigation_all_activity) //Pass the ids of fragments from nav_graph which you dont want to show back button in toolbar
                    .setDrawerLayout(drawerLayout)
                    .build();

    NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); //Setup toolbar with back button and drawer icon according to appBarConfiguration
    NavigationUI.setupWithNavController(navigationView, navController);
    NavigationUI.setupWithNavController(bottomNavigationView, navController);
    /*
     ** Listener for bottomNavigation must be called after been setupWithNavController
     ** This command will override NavigationUI.setupWithNavController(bottomNavigationView, navController)
     ** and the automatic transaction between fragments is lost
     * */
    //bottomNavigationView.setOnNavigationItemSelectedListener(this);
    //navigationView.setNavigationItemSelectedListener(this);

}


@Override
public void onBackPressed() {
    Log.i(TAG, "onBackPressed: ");
    if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
        Log.i(TAG, "onBackPressed: DRAWER IS OPEN -  CLOSING IT");
        drawerLayout.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }

}

@Override
public boolean onSupportNavigateUp() {
    Log.i(TAG, "onSupportNavigateUp: ");
    // replace navigation up button with nav drawer button when on start destination
    return NavigationUI.navigateUp(navController, appBarConfiguration) || super.onSupportNavigateUp();
}

我的活动是主要的。xml:

<?xml version="1.0" encoding="utf-8"?>
<安卓x.drawerlayout.widget.DrawerLayout
安卓:id="@+id/main_drawer"
xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:app="http://schemas.安卓.com/apk/res-auto"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:layout_width="match_parent"
安卓:layout_height="match_parent"
tools:context=".MainActivity">


<安卓x.constraintlayout.widget.ConstraintLayout
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent">

    <fragment
        安卓:id="@+id/main_fragment"
        安卓:layout_width="0dp"
        安卓:layout_height="0dp"
        安卓:name="安卓x.navigation.fragment.NavHostFragment"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@id/main_bottom_nav"
        app:defaultNavHost="true"
        app:navGraph="@navigation/mainnav_graph"/>

    <com.google.安卓.material.bottomnavigation.BottomNavigationView
        安卓:id="@+id/main_bottom_nav"
        安卓:layout_width="match_parent"
        安卓:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:menu="@menu/bottom_nav_menu">

    </com.google.安卓.material.bottomnavigation.BottomNavigationView>

</安卓x.constraintlayout.widget.ConstraintLayout>

<com.google.安卓.material.navigation.NavigationView
    安卓:id="@+id/main_sidebar"
    安卓:layout_width="wrap_content"
    安卓:layout_height="match_parent"
    安卓:layout_gravity="start"
    app:menu="@menu/drawer_menu"/>

</安卓x.drawerlayout.widget.DrawerLayout>

我的底部导航菜单。xml(bottomnavigationview中的片段):

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:安卓="http://schemas.安卓.com/apk/res/安卓">

<item
    安卓:id="@+id/navigation_home"
    安卓:icon="@drawable/ic_home_black_24dp"
    安卓:title="@string/title_home" />
<item
    安卓:id="@+id/navigation_friends"
    安卓:icon="@drawable/ic_home_black_24dp"
    安卓:title="@string/title_friends" />

<item
    安卓:id="@+id/navigation_order"
    安卓:icon="@drawable/ic_dashboard_black_24dp"
    安卓:title="@string/title_order" />
</menu>

我的抽屉里有菜单。xml(抽屉中的片段):

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:安卓="http://schemas.安卓.com/apk/res/安卓">
<item
    安卓:id="@+id/navigation_friends"
    安卓:icon="@drawable/ic_home_black_24dp"
    安卓:title="@string/title_friends" />

<item
    安卓:id="@+id/navigation_order"
    安卓:icon="@drawable/ic_dashboard_black_24dp"
    安卓:title="@string/title_order" />
<item
    安卓:id="@+id/navigation_groups"
    安卓:icon="@drawable/ic_dashboard_black_24dp"
    安卓:title="@string/title_groups" />
<item
    安卓:id="@+id/navigation_profile"
    安卓:icon="@drawable/ic_dashboard_black_24dp"
    安卓:title="@string/title_profile" />
<item
    安卓:id="@+id/navigation_settings"
    安卓:icon="@drawable/ic_dashboard_black_24dp"
    安卓:title="@string/title_settings" />
</menu>

我的主导航图。xml(所有片段):

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
xmlns:app="http://schemas.安卓.com/apk/res-auto"
xmlns:tools="http://schemas.安卓.com/tools"
安卓:id="@+id/mobile_navigation"
app:startDestination="@+id/navigation_home">

<fragment
    安卓:id="@+id/navigation_home"
    安卓:name="fr.spindyo.bottombarwithdrawer.ui.home.HomeFragment"
    安卓:label="@string/title_home"
    tools:layout="@layout/fragment_home" />
<fragment
    安卓:id="@+id/navigation_friends"
    安卓:name="fr.spindyo.bottombarwithdrawer.ui.friends.FriendsFragment"
    安卓:label="@string/title_friends"
    tools:layout="@layout/fragment_friends" />
<fragment
    安卓:id="@+id/navigation_order"
    安卓:name="fr.spindyo.bottombarwithdrawer.ui.order.OrderFragment"
    安卓:label="@string/title_order"
    tools:layout="@layout/fragment_order" />
<fragment
    安卓:id="@+id/navigation_groups"
    安卓:name="fr.spindyo.bottombarwithdrawer.ui.groups.GroupsFragment"
    安卓:label="@string/title_groups"
    tools:layout="@layout/fragment_groups" />
<fragment
    安卓:id="@+id/navigation_profile"
    安卓:name="fr.spindyo.bottombarwithdrawer.ui.profile.ProfileFragment"
    安卓:label="@string/title_profile"
    tools:layout="@layout/fragment_profile" />
<fragment
    安卓:id="@+id/navigation_settings"
    安卓:name="fr.spindyo.bottombarwithdrawer.ui.settings.SettingsFragment"
    安卓:label="@string/title_settings"
    tools:layout="@layout/fragment_settings" />
<fragment
    安卓:id="@+id/navigation_all_activity"
    安卓:name="fr.spindyo.bottombarwithdrawer.ui.allFragment.AllFragment"
    安卓:label="@string/title_all_activity"
    tools:layout="@layout/fragment_all_fragment" />

</navigation>

共 (0) 个答案