ActionBar在活动中支持不同的导航类型。 我们在较旧的文章中看到,我们可以使用Tab键进行导航,也可以使用Drop Down Navigation进行导航 。 在这篇文章中,我们将看到如何使用片段来实现下拉导航 。 下拉导航到底是什么? 它实质上是操作栏中的项目列表。 此项目代表动作,当我们选择其中一项时,我们将激活相应的动作。 通常选择一个项目,然后转到另一个可以使用Fragments实现的UI。
创建下拉导航
Eclipse + ADT和Android studio都支持这种导航,我们可以找到实现它所需的一切。 我们要分析自动生成的代码。 为了在活动中启用下拉导航 ,我们可以创建一个新项目,并在确认所有内容之前进入最后一步:
要启用下拉导航,我们必须获取Actionbar参考并设置所需的导航类型,在本例中为NAVIGATION_MODE_LIST。 如果我们查看生成的代码,我们会注意到:
// Set up the action bar to show a dropdown list.
final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
在第4行,我们启用导航类型。
实施导航项
我们需要创建一个与我们要支持的动作相对应的项目列表。 换句话说,我们必须创建一个包含不同项目的菜单。 下拉列表的实现类似于Spinner。 我们知道Spinner是android视图,它一次显示一次,用户可以在项目列表中选择一个项目。 因此,要创建下拉导航列表,我们只需填充一个微调框。 要填充微调器,我们需要一个适配器,在我们的示例中是一个简单的ArrayAdapter,所以我们有:
ArrayList<String> itemList = new ArrayList<String>();
itemList.add("Section 1");
itemList.add("Section 2");
ArrayAdapter<String> aAdpt = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, itemList);
看代码生成我们注意到,这是一个有点不同形式之一,我们有上述的原因,而不是这个 , 它使用getActionBarThemedContextCompat。 查看此方法代码,我们发现它为Ice Cream Sandwich以下的所有版本返回此值,否则返回另一个值。 这用于维护与所有android版本的兼容性。
现在,我们必须将适配器分配给操作栏,我们可以使用以下方法进行操作:
actionBar.setListNavigationCallbacks(aAddpt, this);
注意,我们将其用作方法参数。 这意味着我们的活动必须实现一个接口,以便在用户选择项目时得到通知。
实现ActionBar.OnNavigationListener
如前所述,为了在用户选择项目时得到通知,我们实现了ActionBar.OnNavigationListener,该方法只有一种方法可以覆盖:
@Override
public boolean onNavigationItemSelected(int position, long id) {// Our logic
}
现在,在此方法中,我们必须根据用户选择的项目激活正确的视图。 通常,我们可以使用Fragment启用正确的UI。 在这种方法中,我们可以实例化一个新的片段,并用新的片段替换现有的片段。
运行我们拥有的代码:
您可能对此感兴趣: Android操作栏(ActionBar)选项卡导航
翻译自: https://www.javacodegeeks.com/2013/07/android-actionbar-drop-down-navigation.html