看看Android“L”预览的API diff报告,我看到所有与ActionBar类中的导航模式相关的方法(如setNavigationMode(), addTab(), selectTab(), &c)。现在已弃用。
文档解释说:
操作栏导航模式已弃用,内联不支持 工具栏操作栏。考虑使用其他常见的导航模式 代替。
替换的是什么?
另外,“内联工具栏操作栏”是一个新概念吗?我想我以前没听说过。
看看Android“L”预览的API diff报告,我看到所有与ActionBar类中的导航模式相关的方法(如setNavigationMode(), addTab(), selectTab(), &c)。现在已弃用。
文档解释说:
操作栏导航模式已弃用,内联不支持 工具栏操作栏。考虑使用其他常见的导航模式 代替。
替换的是什么?
另外,“内联工具栏操作栏”是一个新概念吗?我想我以前没听说过。
当前回答
我认为当你有三到五个同样重要的屏幕时,一个合适的替代品是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设计支持库增加了TabLayout,提供了一个与标签材料设计指南相匹配的标签实现。如何实现选项卡和ViewPager的完整攻防可以在这个视频中找到
现在已弃用:PagerTabStrip是支持库的一部分(已经有一段时间了),可作为直接替代品。如果你喜欢较新的谷歌播放风格选项卡,你可以使用PagerSlidingTabStrip库或修改任何谷歌提供的例子SlidingTabsBasic或SlidingTabsColors,如在这个Dev Bytes视频中所解释的。
似乎他们增加了一个名为android.widget.Toolbar的类,扩展了ViewGroup。此外,他们还在Activity中添加了一个新的方法setActionBar(工具栏)。我还没有测试它,但它看起来像你可以包装各种TabWidgets, Spinners或自定义视图到一个工具栏,并使用它作为你的动作栏。
我也遇到过同样的问题,这个解决方案非常适合我:
在包含viewpager的布局xml文件中,添加如下所示的PagerTabStrip:
<android.support.v4.view.PagerTabStrip
android:id="@+id/pager_tab_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#996633"
android:textColor="#CCCCCC"
android:paddingTop="5dp"
android:paddingBottom="5dp" />
要控制页面标题,在ViewPager文件中添加switch语句:
@Override
public CharSequence getPageTitle(int position)
{
switch (position)
{
case 0:
return "Page 1";
case 1:
return "Page 2";
case 2:
return "Page 3";
}
return null;
}
我认为当你有三到五个同样重要的屏幕时,一个合适的替代品是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/
对于已弃用的ActionBar的“替换”,我将我的ActionBar类型变量的类型更改为PagerTabStrip,按照(注释中的旧代码):
// ActionBar bigActionBar;
PagerTabStrip bigActionBar;
~actionBar的.selectTab(tabindex)的“替换”是使用我相关的ViewPager的.setCurrentItem(int)方法,就像这样(注释中的旧代码):
/*
ActionBar.Tab eventTab = bigActionBar.getTabAt(2);
bigActionBar.selectTab(eventTab);
*/
mViewPager.setCurrentItem(2);
希望这对你有帮助。