看看Android“L”预览的API diff报告,我看到所有与ActionBar类中的导航模式相关的方法(如setNavigationMode(), addTab(), selectTab(), &c)。现在已弃用。
文档解释说:
操作栏导航模式已弃用,内联不支持 工具栏操作栏。考虑使用其他常见的导航模式 代替。
替换的是什么?
另外,“内联工具栏操作栏”是一个新概念吗?我想我以前没听说过。
看看Android“L”预览的API diff报告,我看到所有与ActionBar类中的导航模式相关的方法(如setNavigationMode(), addTab(), selectTab(), &c)。现在已弃用。
文档解释说:
操作栏导航模式已弃用,内联不支持 工具栏操作栏。考虑使用其他常见的导航模式 代替。
替换的是什么?
另外,“内联工具栏操作栏”是一个新概念吗?我想我以前没听说过。
当前回答
对于我来说,使用工具栏v7小部件appcompat来处理已弃用的导航工具栏。
setSupportActionBar(toolbar);
getSupportActionBar().setSubtitle("Feed Detail");
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//goToWhere
}
});
其他回答
新的Android设计支持库增加了TabLayout,提供了一个与标签材料设计指南相匹配的标签实现。如何实现选项卡和ViewPager的完整攻防可以在这个视频中找到
现在已弃用:PagerTabStrip是支持库的一部分(已经有一段时间了),可作为直接替代品。如果你喜欢较新的谷歌播放风格选项卡,你可以使用PagerSlidingTabStrip库或修改任何谷歌提供的例子SlidingTabsBasic或SlidingTabsColors,如在这个Dev Bytes视频中所解释的。
新的工具栏不能用于扩展多个行对象,因此不可能向其添加选项卡。 如果你想使用一个像TabWidget一样的工具栏,你可以插入一些标签对象,但只能使用旧的Holo风格。
这里有一个自定义库,使用v7工具栏,如TabWidget与新的材质设计动画,但它使用相同的方法从旧的ActionBar选项卡,所以你可以附加你的ViewPager到它。
我认为当你有三到五个同样重要的屏幕时,一个合适的替代品是BottomNavigationActivity,这可以用来切换片段。
你会注意到Android Studio中存在一个向导,但要注意,因为Android Studio倾向于生成过于复杂的样板代码。
教程可以在这里找到: https://android.jlelse.eu/ultimate-guide-to-bottom-navigation-on-android-75e4efb8105f
另一个高质量的教程可以在Android Hive这里找到: https://www.androidhive.info/2017/12/android-working-with-bottom-navigation/
现在Android 5.0文档可用了,我们有了工具栏小部件的官方文档:
在应用程序内容中使用的标准工具栏。 工具栏是用于内部的操作栏的泛化 应用程序的布局。而操作栏传统上是控件的一部分 活动的不透明窗口装饰控制的框架,一个工具栏 可以放置在视图内嵌套的任意级别 层次结构。
工具栏小部件也可以用来替换操作栏:
应用程序可以选择指定一个工具栏作为操作栏 使用setActionBar()方法创建一个Activity。
操作栏中标签的弃用很可能是由于这个原因,因为工具栏本身不能包含标签。
此外,它可以通过appcompat库用于以前的Android版本。查看Chris Banes的这篇文章了解更多信息。摘录:
Android 5.0引入了一个新的工具栏小部件。这是一种概括 的动作栏模式,但给你更多的控制和 使用的灵活性。工具栏是层次结构中的一个视图 其他的,更容易与你的其他观点交织, 动画,对滚动事件做出反应。
似乎他们增加了一个名为android.widget.Toolbar的类,扩展了ViewGroup。此外,他们还在Activity中添加了一个新的方法setActionBar(工具栏)。我还没有测试它,但它看起来像你可以包装各种TabWidgets, Spinners或自定义视图到一个工具栏,并使用它作为你的动作栏。