Панель инструментов Android слишком высока в ландшафтном режиме

My min и target sdk равно 21, и я не использую библиотеку поддержки.

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

  • портрет:

portrait mode

  • пейзаж:

landscape mode

Это может выглядеть как ничего, но когда выбраны действия (например, стрелка "вверх" в самом левом углу панели), результат состоит в том, что полоса в несколько пикселей ниже нее видна. Мне не нравится, как он выглядит.

Активность сама не выполняет никаких изменений конфигурации.

Это мой код:

  • styles.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <style name="MyTheme" parent="android:Theme.Material.NoActionBar">
            <item name="android:toolbarStyle">@style/MyToolbarStyle</item>
        </style>
    
        <style name="MyToolbarStyle" parent="android:Widget.Toolbar">
            <item name="android:background">?android:attr/colorPrimary</item>
            <item name="android:elevation">2dp</item>
        </style>
    
    </resources>
    
  • Использование XML:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    xmlns:tools="http://schemas.android.com/tools"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    tools:context="com.test.TestActivity">
    
        <Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    
    </RelativeLayout>
    

Я попробовал испортить атрибут android: minHeight, но, установив так, скажем, 30dp, просто переместил значки еще выше, также в портретном режиме.

Я нашел это: https://code.google.com/p/android/issues/detail?id=77874 Но нет? Attr/actionBarSize...

Как, если вообще, можно ли устранить эту проблему? Телефон, на котором были сделаны скриншоты, - Nexus 6 (xxxhdpi), и значок из пакета значков google, а самым большим ресурсом является xxhdpi. Это проблема?

Обновить: обходной путь из вышеупомянутой ссылки работает, когда я использую? android: attr/actionBarSize. Но это единственный способ? Кажется, что это неправильно, нужны такие обходные пути для нового блестящего компонента, подобного этому, тем более, что обходному пути требуется значение атрибута для компонента, который будет заменен новым.

Ответ 1

попробуйте использовать:

android:height="?android:attr/actionBarSize"

для вашей панели инструментов.

Ответ 2

Добавьте это в свой стиль панели инструментов:

<item name="maxButtonHeight">?attr/actionBarSize</item>

Ответ 3

У меня была такая же проблема с android.support.v7.widget.Toolbar.

Мое решение:

Поместите свою панель инструментов в RelativeLayout с высотой, которую вы хотите для своей панели инструментов. Установите панели инструментов layout_height в "wrap_content" и выровняйте их по вертикали. Надеюсь, это поможет.

<RelativeLayout
        android:id="@+id/main_toolbar_relative_layout"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        >
        <android.support.v7.widget.Toolbar
            android:id="@+id/main_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            >
    </android.support.v7.widget.Toolbar>
</RelativeLayout>