Пользовательские элементы управления

Используя настраиваемые элементы управления, вы можете добавлять свои собственные элементы пользовательского интерфейса поверх представления навигации. Navigation SDK автоматически меняет положение ваших пользовательских элементов управления при изменении встроенного макета.

Для каждой позиции вы можете установить один пользовательский элемент управления. Пользовательский элемент управления может представлять собой один элемент пользовательского интерфейса или, если ваш дизайн требует большего, вы можете использовать ViewGroup с несколькими элементами пользовательского интерфейса.

Метод setCustomControl предоставляет позиции, определенные в перечислении CustomControlPosition :

  • SECONDARY_HEADER (отображается только в портретном режиме)
  • BOTTOM_START_BELOW
  • BOTTOM_END_BELOW

На изображении ниже вы можете увидеть примеры каждой позиции при размещении элемента управления пользовательского интерфейса, информирующего водителя о местонахождении гонщика.

Custom Control Positions

Добавьте пользовательский элемент управления под основным заголовком.

По умолчанию макеты отображают стрелку «Тогда» или указания по полосе под основным заголовком. Ваше приложение может заменить макет по умолчанию пользовательским элементом управления, установленным во вторичном заголовке. Этот элемент управления заменяет содержимое по умолчанию в верхней части представления навигации. Если у вашего представления есть фон, этот фон остается на месте. Когда ваше приложение удаляет пользовательский контент, на его месте появляется контент по умолчанию.

Это положение находится под основным заголовком карты, при этом верхний край совмещен с нижним краем основного заголовка. Вторичный заголовок по умолчанию скрыт. Это положение поддерживается только в portrait mode . В landscape mode вторичный заголовок недоступен, а макет не меняется.

  1. Создайте представление Android с помощью пользовательского элемента пользовательского интерфейса или ViewGroup.
  2. Разполните XML-файл или создайте экземпляр пользовательского представления, чтобы получить экземпляр представления, который можно добавить в качестве вторичного заголовка.
  3. Используйте NavigationView.setCustomControl или NavigationFragment.setCustomControl с CustomControlPosition как SECONDARY_HEADER.

    В приведенном ниже примере создается фрагмент и добавляется пользовательский элемент управления во вторичной позиции заголовка.

     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. Создайте представление или фрагмент навигации.
  3. Вызовите метод setCustomControl в представлении или фрагменте навигации и укажите элемент управления и позицию, которую нужно использовать.

В следующем примере показано пользовательское View , добавленное в NavigationFragment :

  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);