我的问题非常简单,但我无法弄清楚:
当我尝试显示字幕时,工具栏没有足够的空间显示它并将其剪切。
工具栏:
<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>
答案 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>