Intereting Posts
Не удается получить файл конфигурации Google Analytics с официальной страницы Google Пользовательский текстовый просмотр с поворотом, масштабированием, уменьшением масштаба и перемещением по прикосновению в андроиде? Запустить приложение для Android, когда ссылка используется в SMS Как вызвать onSearchRequested при нажатии увеличительного стекла M2e – выполнение плагинов, не охватываемых жизненным циклом AutoCompleteTextView посещает последнюю строку Флаги Android build? Android: Как совместить Spannable.setSpan с String.format? ViewPager + Adapter in Fragment => laggy swiping Улучшенный тег электронной торговли через GTM v5 с использованием пакета firebase Android: открыть файл с выбором намерения из URI, полученный с помощью платформы доступа к хранилищу Невозможно построить успешную ошибку проекта corova при выполнении команды ant debug Пропустить метод обратного вызова в классе non-activity для класса активности android? Есть ли метод, который работает как исходный фрагмент для результата? Программно установить цвет текста в основное андроидное текстовое изображение

Получить ссылку на значок значка навигации панели инструментов

Я хотел бы выделить значок ящика на Toolbar (работая над учебником). Для этого мне нужна его позиция. Как получить ссылку на значок навигационной панели (гамбургер)?

Solutions Collecting From Web of "Получить ссылку на значок значка навигации панели инструментов"

Вы можете использовать описание содержимого представления, а затем использовать метод findViewWithText() чтобы получить ссылку на просмотр

  public static View getToolbarNavigationIcon(Toolbar toolbar){ //check if contentDescription previously was set boolean hadContentDescription = TextUtils.isEmpty(toolbar.getNavigationContentDescription()); String contentDescription = !hadContentDescription ? toolbar.getNavigationContentDescription() : "navigationIcon"; toolbar.setNavigationContentDescription(contentDescription); ArrayList<View> potentialViews = new ArrayList<View>(); //find the view based on it's content description, set programatically or with android:contentDescription toolbar.findViewsWithText(potentialViews,contentDescription, View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION); //Nav icon is always instantiated at this point because calling setNavigationContentDescription ensures its existence View navIcon = null; if(potentialViews.size() > 0){ navIcon = potentialViews.get(0); //navigation icon is ImageButton } //Clear content description if not previously present if(hadContentDescription) toolbar.setNavigationContentDescription(null); return navIcon; } 

Больше

Изучив дочерние представления панели инструментов в режиме отладки, я увидел, что значок ящика можно найти там, как ImageButton. (Спасибо Elltz)

Я использую панель инструментов с пользовательской раскладкой xml с двумя детьми (LinearLayout и ImageView), поэтому на моей панели инструментов было 4 ребенка в конце, с этими позициями:

 [0] LinearLayout(from custom xml) [1] ImageView(from custom xml) [2] ImageButton(drawer icon) [3] ActionMenuView(menu icon) 

Зная это, теперь я могу использовать:

 View drawerIcon = toolbar.getChildAt(2); 

Для получения ссылки на значок меню ящика. В моем случае позиция равна 2. Это положение должно быть равно количеству дочерних представлений в вашем пользовательском макете панели инструментов.

Если кто-то найдет лучшее решение, пожалуйста, дайте мне знать.

Если вы просто хотите получить Drawable представляющий значок навигации на панели инструментов, вы можете сделать это:

 Drawable d = mToolbar.getNavigationIcon(); 

Вы можете получить ссылку на ImageButton, используемую для значка навигации на панели инструментов, с помощью метода:

 public ImageButton getToolbarNavigationButton() { int size = mToolbar.getChildCount(); for (int i = 0; i < size; i++) { View child = mToolbar.getChildAt(i); if (child instanceof ImageButton) { ImageButton btn = (ImageButton) child; if (btn.getDrawable() == mToolbar.getNavigationIcon()) { return btn; } } } return null; }