2015-08-27 3 views
3

У меня есть приложение панели инструментов здесь:Android Toolbar установить название объяснение

toolbar = (Toolbar) findViewById(R.id.app_bar); 
setSupportActionBar(toolbar); 

Когда я хочу, чтобы установить заголовок экрана, я должен сделать следующее:

ActionBar bar = getSupportActionBar(); 
if (bar != null) { 
    bar.setTitle(SCREEN_TITLE); 
} 

Мои вопросы, почему при вызове toolbar.setTitle() не работает. Но вместо этого мне нужно сначала получить панель действий, а затем я могу установить заголовок?

P.S. В другой стороны, я могу установить значок панели инструментов, как правило, не получая панель действий, как так:

toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white); 
+0

Возможный дубликат [In android app Toolbar.setTitle метод не действует - имя приложения отображается как название] (http://stackoverflow.com/questions/26486730/in-android-app-toolbar-settitle-method- has-no-effect-application-name-is-показано) –

+0

не дублируется. Я не спрашиваю, как установить заголовок. Код работает нормально для установки заголовка. Мне нужно объяснение о том, как и зачем нужна эта логика кода. –

+0

просмотрите ответ на этот вопрос, и вы найдете объяснение. –

ответ

2

Toolbar является обобщением баров действий для использования в макетах приложений.

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

У вас есть свобода размещать любой виджет внутри панели инструментов.

Вы можете определить несколько панелей инструментов.

Toolbar может быть размещен на любом произвольном уровне вложенности внутри иерархии представления. Приложение может выбрать назначение Toolbar в качестве панели действий для действия с использованием метода setActionBar().

Как Toolbar является обобщением ActionBar. вы должны сначала установить Toolbar как ActionBar, тогда вы можете использовать все методы ActionBar.

EDIT:

Вот Link, что объясняет понятие панели инструментов.

Вот bug link сообщили в андроиде вопросах: В вопросе они предполагают, что только вы вызываете setSupportActionBar(Toolbar), Бар Действия затем отвечает за обработку заголовка, это означает, что вам нужно вызвать getSupportActionBar().setTitle(...) установить пользовательский заголовок. Он также дает объяснение, почему работает toolbar.setNavigationIcon(R.drawable.ic_arrow_back_white);.

Надеюсь, это поможет!

+0

Ваш ответ вроде помогает мне лучше понять. Но вопрос в том, почему я могу использовать toolbar.setNavigationIcon() для изменения значка назад, но не могу использовать toolbar.setTitle(). –

+0

Вот ссылка об ошибке, указанная в проблемах android: https://code.google.com/p/android/issues/detail?id=77763. В выпуске они предполагают, что после вызова setSupportActionBar (Панели инструментов) панель действий затем отвечает за обработку заголовка, а это значит, что вам нужно вызвать getSupportActionBar(). SetTitle (...), чтобы установить пользовательский заголовок. – Rajesh

+0

см. Отредактированный ответ – Rajesh

Смежные вопросы