工具栏字幕被剪切(它不适合高度)

时间:2016-02-17 08:41:03

标签: android android-actionbar android-toolbar

我的问题非常简单,但我无法弄清楚:

当我尝试显示字幕时,工具栏没有足够的空间显示它并将其剪切。

工具栏:

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?android:actionBarSize"
android:layout_centerHorizontal="true"
app:theme="@style/MyToolBar">

?android:actionBarSize高度不足以正确显示标题字幕

当我将工具栏高度设置为wrap_content时,一切正常,但任何人都可以向我解释我应该如何正确设置高度?

styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowBackground">@color/background1</item>
    <item name="android:textColorPrimary">@color/colorAccent</item>

    <!-- Customize your theme here. -->
</style>

<style name="MyToolBar" parent="Widget.AppCompat.ActionBar">
    <!-- Support library compatibility -->
    <item name="android:textColorPrimary">@color/colorAccent</item>
    <item name="android:textColorSecondary">@color/colorAccent</item>
    <item name="colorControlNormal">@color/colorAccent</item>

</style>

5 个答案:

答案 0 :(得分:5)

我使用了带字幕的工具栏,并使用了layout_height="wrap_content"我还添加了minHeight。这将确保您的工具栏至少达到最小高度。我没有看到它在高度或作物上跳跃,但我总是有一个字幕设置。

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:elevation="@dimen/default_elevation"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

答案 1 :(得分:1)

我建议你为工具栏创建一个新的布局,然后你可以填充它 但是你想要。并在Java代码中将其设置为ActionBar。因此,您不会再遇到任何空间问题。

答案 2 :(得分:0)

问题是您已将布局高度指定为?attr / actionBarSize 。如果您没有指定字幕,这应该没问题,因为这只是为标题量身定制的。我的建议是制作android:layout_height="wrap_content",而是使用工具栏的minHeight参数。因此你的xml变成了 -

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:layout_centerHorizontal="true"
app:theme="@style/MyToolBar">

答案 3 :(得分:0)

即使有字幕,我也已经使用layout_height=actionBarSize很长时间了,但从未遇到过这个问题(在各种模拟器和像素电话上进行测试)。看到字幕在Samsung Galaxy手机上中断后,我立即应用此修复程序。在我看来,这个问题取决于系统如何设置字幕间距。

我已经切换到新的材质组件(androidx)。因此,该问题仍然存在于最新版本中。

使用将wrap_content作为高度并将actionBarSize属性作为minHeight的组合的解决方案不会影响没有问题的设备,因此在这些情况下,看不到任何跳跃。

<androidx.appcompat.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:actionBarSize" />

答案 4 :(得分:0)

就我而言,我为我的项目使用了自定义字体 (NotosanJP),因此我的 Toolbar 副标题被删除了。不使用自定义字体,效果很好。
所以我的解决方案是更改Toolbar中的文字大小。
经过调试,我发现我当前的Toolbar标题的默认大小是20,Toolbar副标题是16。所以我把它缩小了2

<androidx.appcompat.widget.Toolbar
            ...
            app:titleTextAppearance="@style/MyToolbarTitleAppearance"
            app:subtitleTextAppearance="@style/MyToolbarSubtitleAppearance" />

style.xml

<style name="MyToolbarTitleAppearance" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Title">
    <item name="android:textSize">18dp</item>
</style>

<style name="MyToolbarSubtitleAppearance" parent="@style/TextAppearance.Widget.AppCompat.Toolbar.Subtitle">
    <item name="android:textSize">14dp</item>
</style>