В моем приложении есть почти полноэкранный фрагмент диалогового окна, содержащий панель инструментов сверху. Я хочу стилизовать эту панель инструментов, как в Материале рекомендации по дизайну:
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);
Моя панель инструментов выглядит так:
У меня четыре проблемы:
- Текст «Сохранить» не отображается рядом с галочкой, хотя для него достаточно места
- Значок X слишком большой (может быть, использовать версию 36dip?)
- Значок X не активен
- На панели инструментов не отображается заголовок («Новая папка»)
Что я делаю не так?
Обратите внимание, что моя панель инструментов не настроена как панель действий! Это просто панель инструментов во фрагменте.
2 ответа
- Я не думаю, что вам следует использовать текст в меню (справа от панели инструментов). Глядя на инструкции, вы можете увидеть, что это не очень хорошая практика, и все примеры показывают меню только со значками.
- Исходя из рекомендаций, я думаю, вам следует использовать 24dp (http: //www.google.com/design/spec/style/icons.html#icons-system-icons в разделе "Распродажа")
Использовать
toolbar.setNavigationOnClickListener ();
вам нужно установить заголовок как
toolbar.setTitle ("'Новая папка")
Текст «Сохранить» не отображается рядом с галочкой, хотя для него достаточно места
Это невозможно. Вы можете отображать только текст или только значок.
Значок X слишком большой (может быть, использовать версию 36dip?)
Вы должны использовать версию 24dp.
На панели инструментов не отображается заголовок («Новая папка»)
Поскольку вы находитесь во фрагменте, вам нужно явно указать заголовок на панели инструментов, и из вашего кода я не вижу исходного кода, который это делает. Вам нужно сделать это программно (через xml кажется, что он сломан), и я предпочитаю использовать библиотеку поддержки.
Значок X не активен
Вам нужно использовать OnNavigationClickListener
, а не OnMenuClickListener
, ваш значок X
- это значок навигации, а не значок меню.
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.