Является ли значок значка панели инструментов доступным?

Я использовал панель инструментов, так что теперь я хочу применить событие click на значке логотипа, как я могу получить это событие?

Вот некоторые материалы кодирования, которые я сделал

Toolbar toolbar = null; toolbar = (Toolbar) findViewById(R.id.actionToolbar); setSupportActionBar(toolbar); setTitle(null); toolbar.setNavigationIcon(R.drawable.back); toolbar.setNavigationContentDescription("BACK"); toolbar.setLogo(R.drawable.ic_launcher); toolbar.setLogoDescription("LOGO"); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "Nav", Toast.LENGTH_SHORT).show(); } }); 

Здесь я установил значок навигации и логотип, так что теперь я хочу, чтобы событие щелчка значка логотипа, как это возможно?

Вам нужно сначала обратиться к нему

 View logoView = getToolbarLogoView(toolbar); logoView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //logo clicked } }); 

Используя описание содержимого, мы можем получить ссылку View . См. Комментарии в строке.

 public static View getToolbarLogoIcon(Toolbar toolbar){ //check if contentDescription previously was set boolean hadContentDescription = android.text.TextUtils.isEmpty(toolbar.getLogoDescription()); String contentDescription = String.valueOf(!hadContentDescription ? toolbar.getLogoDescription() : "logoContentDescription"); toolbar.setLogoDescription(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 setLogoDescription ensures its existence View logoIcon = null; if(potentialViews.size() > 0){ logoIcon = potentialViews.get(0); } //Clear content description if not previously present if(hadContentDescription) toolbar.setLogoDescription(null); return logoIcon; } 

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

Вместо метода я сделал следующее:

 // Set drawable toolbar.setLogo(ContextCompat.getDrawable(context, R.drawable.logo)); // Find logo View view = toolbar.getChildAt(1); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Perform actions } }); 

Немного хак-иш, но вернемся немного позже. Совместное использование для обсуждения.

Intereting Posts
Настраиваемый диалог с кнопкой закрытия ListView внутри ScrollView с DrawerLayout Как вычислить радиус вокруг точки в Android MapView? MediaPlayer – используйте объем рингтона вместо объема мультимедиа Android: выполнять код через регулярные промежутки времени Ошибка сборки привязки данных Android: : не удалось установить привязку данных Приемник широковещательной передачи Android не получает ACTION_SCREEN_ON Проверка показывает исключение нулевого указателя, пока я проверяю нулевую вероятность Пользовательский макет панели действий с меню переполнения Как избежать 15-секундной задержки / кэширования в Android Media Player при воспроизведении потока Как программно закрыть программу Google Navigation? Android KitKat HttpURLConnection отключает AsyncTask Как отправить подтверждение электронной почты с помощью Firebase? Android Studio: как посмотреть источники поддержки android v4 и v7? Файлы обмена файлами Android, отправляя их по электронной почте или другим приложениям