我正在尝试将子菜单项添加到我的导航抽屉中,使用到目前为止的代码实现此目的的最简单方法是什么?



这是我拥有的主活动,它有我的导航抽屉。是否像将子菜单项添加到抽屉菜单 XML 或导航抽屉视图一样简单。还是我必须使用可扩展的列表视图以编程方式在我的代码中添加它。任何帮助将不胜感激。当我单击导航抽屉上的项目时,我希望它下拉到更多选择?

public class MainActivity extends AppCompatActivity {
DrawerLayout drawerLayout;
Toolbar toolbar;
ActionBarDrawerToggle actionBarDrawerToggle;
FragmentTransaction fragmentTransaction;
NavigationView navigationView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close);
drawerLayout.addDrawerListener(actionBarDrawerToggle);
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.add(R.id.main_container, new HomeFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("Drift Fan");
navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.Home:
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new HomeFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("Home Fragment");
item.setCheckable(true);
drawerLayout.closeDrawers();
break;
case R.id.my_account:
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new myAccountFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("My Account");
item.setCheckable(true);
drawerLayout.closeDrawers();
break;
case R.id.nav_about:
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new AboutDriftingFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("About Drifting");
item.setCheckable(true);
drawerLayout.closeDrawers();
break;
case R.id.nav_shop:
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new ShopFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("Shop");
item.setCheckable(true);
drawerLayout.closeDrawers();
break;
case R.id.nav_news:
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_container, new NewsFragment());
fragmentTransaction.commit();
getSupportActionBar().setTitle("News");
item.setCheckable(true);
drawerLayout.closeDrawers();
break;
}

return false;
}
});
}
@Override
protected void onPostCreate(@Nullable Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
actionBarDrawerToggle.syncState();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.drawer_menu, menu);
return true;

}
}

下面是布局文件,抽屉菜单布局,我有我的项目。

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

<group android:id="@+id/group7">
<item android:id="@+id/Home" android:title="Home"></item>>
</group>
<group android:id="@+id/group6">
<item android:id="@+id/my_account" android:title="My Account"></item>
</group>
<group android:id="@+id/group5">
<item android:id="@+id/nav_news" android:title="News"></item>
</group>
<group android:id="@+id/group1">
<item android:id="@+id/nav_live" android:title="Live"></item>
</group>
<group android:id="@+id/group2">
<item android:id="@+id/nav_media" android:title="Media"></item>
</group>
<group android:id="@+id/group3">
<item android:id="@+id/nav_calendar" android:title="Calendar"></item>
</group>
<group android:id="@+id/group4">
<item android:id="@+id/nav_results" android:title="Results"></item>
</group>
<group android:id="@+id/group8">
<item android:id="@+id/nav_about" android:title="About Drifting"></item>
</group>
<group android:id="@+id/group9">
<item android:id="@+id/nav_shop" android:title="Shop"></item>
</group>
<group android:id="@+id/group10">
<item android:id="@+id/nav_socialmedia" android:title="SocialMedia"></item>
</group>
<group android:id="@+id/group11">
<item android:id="@+id/nav_fanzone" android:title="Fanzone"></item>
</group>
<group android:id="@+id/group12">
<item android:id="@+id/nav_map" android:title="Navigation to Event"></item>
</group>

</menu>

以下是我的活动主XML布局,其中包含我的导航抽屉:

<?xml version="1.0" encoding="utf-8"?>
<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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:id="@+id/drawer_layout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:layout_height="wrap_content"
android:layout_width="match_parent"
layout="@layout/toolbar_layout"
/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_container">
</FrameLayout>
</LinearLayout>
<android.support.design.widget.NavigationView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/navigation_view"
android:layout_gravity="start"
android:background="#000"
app:itemTextColor="@color/colorPrimary"
app:itemIconTint="#fff"
app:menu="@menu/drawer_menu"
app:theme="@style/NavigationViewStyle"
app:headerLayout="@layout/navigation_drawer_header">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>

尝试在菜单布局文件中添加以下内容:

<item android:title="Submenu title">
<menu>
<item
android:id="@+id/navigation_submenu_1"
android:title="submenutitle1"
android:icon="@drawable/ic_timer_auto_black_36dp"/>
<item
android:id="@+id/navigation_submenu_2"
android:title="submenutitle2"
android:icon="@drawable/ic_close_black_36dp"/>
</menu>
</item>

所以你的菜单是这样的:

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

<group android:id="@+id/group7">
<item android:id="@+id/Home" android:title="Home"></item>>
</group>
<group android:id="@+id/group6">
<item android:id="@+id/my_account" android:title="My Account"></item>
</group>
<group android:id="@+id/group5">
<item android:id="@+id/nav_news" android:title="News"></item>
</group>
<group android:id="@+id/group1">
<item android:id="@+id/nav_live" android:title="Live"></item>
</group>
<group android:id="@+id/group2">
<item android:id="@+id/nav_media" android:title="Media"></item>
</group>
<group android:id="@+id/group3">
<item android:id="@+id/nav_calendar" android:title="Calendar"></item>
</group>
<group android:id="@+id/group4">
<item android:id="@+id/nav_results" android:title="Results"></item>
</group>
<group android:id="@+id/group8">
<item android:id="@+id/nav_about" android:title="About Drifting"></item>
</group>
<group android:id="@+id/group9">
<item android:id="@+id/nav_shop" android:title="Shop"></item>
</group>
<group android:id="@+id/group10">
<item android:id="@+id/nav_socialmedia" android:title="SocialMedia"></item>
</group>
<group android:id="@+id/group11">
<item android:id="@+id/nav_fanzone" android:title="Fanzone"></item>
</group>
<group android:id="@+id/group12">
<item android:id="@+id/nav_map" android:title="Navigation to Event"></item>
</group>
<item android:title="Submenu title">
<menu>
<item
android:id="@+id/navigation_submenu_1"
android:title="submenutitle1"
android:icon="@drawable/ic_timer_auto_black_36dp"/>
<item
android:id="@+id/navigation_submenu_1"
android:title="submenutitle2"
android:icon="@drawable/ic_close_black_36dp"/>
</menu>
</item>

</menu>

相关内容

最新更新