В моем приложении есть почти полноэкранный фрагмент диалогового окна, содержащий панель инструментов сверху. Я хочу стилизовать эту панель инструментов, как в Материале рекомендации по дизайну:

material dialog

XML панели инструментов:

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="@dimen/abc_action_bar_default_height_material"
    android:layout_width="match_parent"
    android:title="@string/new_folder"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:background="@color/primary_dark"/>

XML меню:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools">
  <item
    android:id="@+id/action_done"
    android:title="@string/action_save"
    android:icon="@drawable/ic_done_white_48dp"
    android:orderInCategory="100"
    app:showAsAction="always|withText" />
</menu>

В моем фрагменте диалогового окна код, относящийся к панели инструментов:

 private Toolbar.OnMenuItemClickListener mMenuItemListener = new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem menuItem) {
        switch (menuItem.getItemId()) {
            case android.R.id.home:
                dismiss();
                return true;
            case R.id.action_done:
                dismiss();
                return true;
        }
      return false;
    }

...

    mToolbar.setNavigationIcon(R.drawable.ic_close_white_48dp);
    mToolbar.inflateMenu(R.menu.menu_folder);
    mToolbar.setOnMenuItemClickListener(mMenuItemListener);

Моя панель инструментов выглядит так:

toolbar troubles

У меня четыре проблемы:

  1. Текст «Сохранить» не отображается рядом с галочкой, хотя для него достаточно места
  2. Значок X слишком большой (может быть, использовать версию 36dip?)
  3. Значок X не активен
  4. На панели инструментов не отображается заголовок («Новая папка»)

Что я делаю не так?

Обратите внимание, что моя панель инструментов не настроена как панель действий! Это просто панель инструментов во фрагменте.

3
Maarten 24 Фев 2015 в 13:20

2 ответа

Лучший ответ
  1. Я не думаю, что вам следует использовать текст в меню (справа от панели инструментов). Глядя на инструкции, вы можете увидеть, что это не очень хорошая практика, и все примеры показывают меню только со значками.
  2. Исходя из рекомендаций, я думаю, вам следует использовать 24dp (http: //www.google.com/design/spec/style/icons.html#icons-system-icons в разделе "Распродажа")
  3. Использовать

    toolbar.setNavigationOnClickListener ();

  4. вам нужно установить заголовок как

    toolbar.setTitle ("'Новая папка")

1
Renan Ferreira 24 Фев 2015 в 10:37

Текст «Сохранить» не отображается рядом с галочкой, хотя для него достаточно места

Это невозможно. Вы можете отображать только текст или только значок.

Значок X слишком большой (может быть, использовать версию 36dip?)

Вы должны использовать версию 24dp.

На панели инструментов не отображается заголовок («Новая папка»)

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

Значок X не активен

Вам нужно использовать OnNavigationClickListener, а не OnMenuClickListener, ваш значок X - это значок навигации, а не значок меню.

2
Simon Dorociak 24 Фев 2015 в 10:47