Fhl*_*Fhl 8 android navigationview
这个话题说明了一切.我应该如何使用NavigationView检索onClick侦听器上的项目位置?另外,为什么没有getHeader方法?最后我以编程方式执行所有操作,但标题仍然可以点击.有什么想法吗?
谢谢!
我找到了一个简单的解决方 您可以使用Menu的add(...)方法分配订单.然后,您可以使用MenuItems的getOrder(...)方法检索订单.如果您使用的是xml,则可以使用android:orderInCategory="...".
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation);.
Menu menu = navigationView.getMenu();
for(int i=0; i < menu.size(); i++){
items.add(Menu.NONE, Menu.NONE, i, menu.getItem(i));
}
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){
@Override
public boolean onNavigationItemSelected(final MenuItem menuItem) {
// update highlighted item in the navigation menu
menuItem.setChecked(true);
int position=items.getOrder();
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
UPDATE
你可以使用这个技巧获得位置
final List<MenuItem> items = new ArrayList<>();
Menu menu;
NavigationView navigationView = (NavigationView) findViewById(R.id.navigation);.
menu = navigationView.getMenu();
for(int i = 0; i < menu.size(); i++){
items.add(menu.getItem(i));
}
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener(){
@Override
public boolean onNavigationItemSelected(final MenuItem menuItem) {
// update highlighted item in the navigation menu
menuItem.setChecked(true);
int position = items.indexOf(menuItem);
return true;
}
});
Run Code Online (Sandbox Code Playgroud)
如果你为菜单项指定“android:orderInCategory”属性,你就可以接受它的订单:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:orderInCategory="0"
android:title="@string/news" />
<item
android:orderInCategory="1"
android:title="@string/search" />
</menu>
Run Code Online (Sandbox Code Playgroud)
val navigationView = findViewById<NavigationView>(R.id.navigation)
navigationView.setNavigationItemSelectedListener { menuItem ->
val menuItemOrder = menuItem.order
true
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想手动指定订单,请使用此方法:
val navigationView = findViewById<NavigationView>(R.id.navigation)
navigationView.setNavigationItemSelectedListener { menuItem ->
val menuItemIndex = bottomNavigation.menu.children.indexOf(menuItem)
true
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6625 次 |
| 最近记录: |