Я мигрируют из ActionBar
к Toolbar
в моем приложении. Но я не знаю, как отобразить и установить событие нажатия на Back Arrow, Toolbar
как я это делал Actionbar
.
С ActionBar
, я звоню mActionbar.setDisplayHomeAsUpEnabled(true)
. Но подобного метода не существует.
Кто-нибудь когда-нибудь сталкивался с такой ситуацией и как-то нашел способ ее решить?
Ответы:
Если вы используете,
ActionBarActivity
то вы можете сказать Android использоватьToolbar
какActionBar
:А потом звонит
будет работать. Вы также можете использовать это во фрагментах, которые прикреплены к
ActionBarActivities
вам, вы можете использовать это так:Если вы не используете
ActionBarActivities
или хотите, чтобы стрелка назад наToolbar
значке не была указана как ваша,SupportActionBar
вы можете использовать следующее:Если вы используете
android.support.v7.widget.Toolbar
, то вы должны добавить следующий код к вашемуAppCompatActivity
:источник
R.drawable.abc_ic_ab_back_mtrl_am_alpha
ни другоеR.drawable.ic_action_back
.toolbar.setNavigationIcon(android.support.v7.appcompat.R.drawable.abc_ic_ab_back_material);
Я вижу много ответов, но вот мой, который не упоминался ранее. Работает с API 8+.
источник
onOptionItemSelected()
этого завершает то, что MrEngineer13 не покрыл в своем ответе.Есть много способов добиться этого, вот мой любимый:
Планировка:
Деятельность:
источник
setNavigationOnClickListener()
вы можете добавитьcase android.R.id.home:
внутрь 'onOptionsItemSelected () `.case android.R.id.home
не работал для меня так что после поиска некоторое время ваш ответ сделал свое дело .. спасибо.Вы можете использовать метод setNavigationIcon панели инструментов. Android Doc
источник
setNavigationOnClickListener()
был добавлен в API уровне 21 и вышеЕсли вы не хотите создавать кастом
Toolbar
, вы можете сделать этоВ тебе
AndroidManifest.xml
Вы также можете поместить это
android:theme="@style/Theme.AppCompat.Light"
в<aplication>
теге, для применять ко всем видам деятельностиисточник
if (item.getItemId() == android.R.id.home)
И для API 21+
android:navigationIcon
источник
Я использовал этот метод из документации разработчика Google :
Если вы получите исключение нулевого указателя, это может зависеть от темы. Попробуйте использовать другую тему в манифесте или используйте это альтернативно:
Затем в манифесте, где я устанавливаю родительское действие для текущего действия:
Я надеюсь, что это поможет вам!
источник
getSupportActionBar()
работал. Спасибо!Если вы были с помощью
AppCompatActivity
и пошли по пути он не используется, потому что вы хотите , чтобы не получить автоматическое ,ActionBar
что она обеспечивает, потому что вы хотите выделитьToolbar
, из - за ваших потребностей Material Design иCoordinatorLayout
илиAppBarLayout
, то, считаю , что это:Вы все еще можете использовать
AppCompatActivity
, вам не нужно прекращать использовать его только для того, чтобы вы могли использовать<android.support.v7.widget.Toolbar>
в вашем XML. Просто отключите стиль панели действий следующим образом:Во-первых, выведите стиль из одной из тем NoActionBar, которая вам нравится в вашей
styles.xml
, которую я использовалTheme.AppCompat.Light.NoActionBar
следующим образом:В манифесте своего приложения выберите только что определенную тему дочернего стиля, например:
В вашем Activity Xml, если панель инструментов определена так:
Затем, и это важная часть, вы устанавливаете для панели действий поддержки значение AppCompatActivity, которое вы расширяете, чтобы панель инструментов в xml стала панелью действий. Мне кажется, что это лучший способ, потому что вы можете просто делать множество вещей, которые позволяет ActionBar, например, меню, автоматический заголовок активности, обработку выбора элементов и т. Д., Не прибегая к добавлению пользовательских обработчиков кликов и т. Д.
В переопределении onCreate вашей активности выполните следующие действия:
источник
источник
Простой и легкий способ показать кнопку назад на панели инструментов
Вставьте этот код в метод onCreate
Вставьте этот метод переопределения вне метода onCreate
источник
В Котлине это было бы
источник
Вы можете легко это сделать.
Кредиты: https://freakycoder.com/android-notes-24-how-to-add-back-button-at-toolbar-941e6577418e
источник
В
AppCompatActivity
, например , вы можете сделатьисточник
В вашем файле манифеста для действия, в которое вы хотите добавить кнопку возврата, мы будем использовать свойство android: parentActivityName
PS Этот атрибут был введен в API Level 16.
источник
Это работало отлично
источник
Сначала вам нужно инициализировать панель инструментов:
затем нажмите кнопку «Назад» на панели действий:
источник
Если вы хотите получить стрелку назад на панели инструментов, которая не установлена в качестве SupportActionBar:
(Котлин)
чтобы получить разрешение от атрибутов:
источник
Добавьте это в xml активности в папке макета:
Сделайте панель инструментов кликабельной, добавьте их в метод onCreate:
источник
Возможно, более надежный способ получить значок «вверх» из вашей темы (если не использовать панель инструментов в качестве панели действий):
Чтобы превратить атрибут темы в рисованный объект, я использовал функцию расширения:
источник
Если вы используете DrawerLayout с ActionBarDrawerToggle , то, чтобы показать кнопку « Назад» вместо кнопки « Меню» (и наоборот), вам нужно добавить этот код в свою активность:
Поэтому, когда вам нужно показать кнопку « Назад» вместо кнопки « Меню» , вызовите showBackInToolbar (true) , а если вам нужна кнопка « Меню» , вызовите showBackInToolbar (false) .
Вы можете сгенерировать стрелку назад (ic_arrow_back_white_32dp) здесь , поиск arrow_back в разделе Clipart (используйте 32dp по умолчанию с отступом 8dp). Просто выберите нужный вам цвет.
источник
Вы всегда можете добавить a
Relative layout
или aLinear Layout
в свой файлToolbar
и разместить изображение в виде значка назад или значка закрытия в любом месте на панели инструментов, как вам нравится.Например, я использовал относительное расположение на панели инструментов
И это выглядит так:
Вы можете добавить прослушиватель щелчков на этом изображении из Activity или фрагмента следующим образом.
источник
С Котлиным стало:
Xml:
В вашей деятельности: -
источник
Если вы используете JetPack Navigation.
Вот макет для MainActivity
Настройте панель инструментов в своей деятельности, как показано ниже в onCreate () вашего класса Activity.
setupActionBarWithNavController (navController) Создает кнопку возврата на панели инструментов, если это необходимо, и обрабатывает функциональность backButton. Если вам нужно написать функциональность CustomBack, создайте callBack, как показано ниже для вашего фрагмента метода onCreate ()
Из документации: https://developer.android.com/guide/navigation/navigation-custom-back
источник
Если вы используете
androidx.appcompat.app.AppCompatActivity
просто использовать:Затем просто определите в
Manifest.xml
родительской активности.Вместо этого, если вы используете,
Toolbar
и вы хотите пользовательское поведение, просто используйте:и в вашей деятельности:
источник