自定义控件

使用自定义控件,您可以在导航视图之上添加自己的界面元素。当内置布局发生变化时,Navigation SDK 会自动调整自定义控件的位置。

对于每个位置,您可以设置一个自定义控件。自定义控件可以是一个界面元素;如果您的设计需要更多界面元素,可以将 ViewGroup 与多个界面元素结合使用。

setCustomControl 方法提供 CustomControlPosition 枚举中定义的位置:

  • SECONDARY_HEADER(仅在纵向模式下显示)
  • BOTTOM_START_BELOW
  • BOTTOM_END_BELOW

在下图中,您可以看到界面控件放置位置中每个位置的示例,该控件会将乘客位置告知驾驶员。

自定义控件位置

在主标题下方添加自定义控件

默认情况下,布局会在主要标题下方显示“然后”箭头或车道导航。您的应用可以使用在辅助标头位置设置的自定义控件来替换默认布局。此控件会替换导航视图上方的默认内容。如果您的视图具有背景,则该背景会保留在原位。当应用移除自定义内容时,默认内容会显示在相应位置。

此位置在主地图标题下方,顶部边缘与主标题的下边缘对齐。默认辅助标头处于隐藏状态。只有 portrait mode 支持此位置。在 landscape mode 中,辅助标头不可用,布局也不会更改。

  1. 使用自定义界面元素或 ViewGroup 创建 Android 视图
  2. 膨胀 xml 或实例化自定义视图,以获取视图的实例以将其添加为辅助标头。
  3. 使用 NavigationView.setCustomControlNavigationFragment.setCustomControl,将 CustomControlPosition 用作 SECONDARY_HEADER。

    下例就创建了一个 fragment,并在辅助标头位置添加了自定义控件。

     mNavFragment.setCustomControl(getLayoutInflater().
       inflate(R.layout.your_custom_control, null),
          CustomControlPosition.SECONDARY_HEADER);
    

移除辅助页眉

如果要移除辅助标头并返回到默认内容,请使用 setCustomControl 方法。

  • 将视图设置为 null 即可移除视图。

    mNavFragment.setCustomControl(null, CustomControlPosition.SECONDARY_HEADER);
    

在导航视图之上添加自定义控件

应用可以指定与视图下边缘对齐的自定义控件。当应用添加自定义控件时,重新居中的按钮和 Google 徽标会向上移动以适应自定义控件。

  1. 使用要添加的界面元素或视图组创建 Android 视图
  2. 创建导航视图或 fragment。
  3. 对导航视图或 fragment 调用 setCustomControl 方法,并指定要使用的控件和位置。

以下示例展示了添加到 NavigationFragment 的自定义 View

  private NavigationFragment mNavFragment;
    mNavFragment = (NavigationFragment)
      getFragmentManager().findFragmentById(R.id.navigation_fragment);

    // Create the custom control view.
    MyCustomView myCustomView = new MyCustomView();

    // Add the custom control to the bottom end corner of the layout.
    mNavFragment.setCustomControl(myCustomView, CustomControlPosition.
       BOTTOM_END_BELOW);

移除自定义控件

如需移除自定义控件,请使用 setCustomControl 方法并指定要移除的控件的位置。

  • 针对该位置,将视图设置为 null

    mNavFragment.setCustomControl(null, CustomControlPosition.BOTTOM_END_BELOW);