工具栏上的文本背景问题

Posted

技术标签:

【中文标题】工具栏上的文本背景问题【英文标题】:Text background issue on Toolbar 【发布时间】:2017-01-31 01:17:04 【问题描述】:

向我的工具栏背景颜色添加一些 alpha 时,我注意到标题的 TextView 应用了一个背景:

这是我的布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         android:layout_
         android:layout_
         xmlns:app="http://schemas.android.com/apk/res-auto"
         android:background="#0099cc">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_
        android:layout_
        app:theme="@style/FullscreenActionBarStyle"
        app:titleTextAppearance="@style/ActionBarTitle"/>

    <ImageView
        android:id="@+id/fullscreen_content"
        android:layout_
        android:layout_
        android:src="@drawable/image"/>

</FrameLayout>

还有我的styles.xml:

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>

        <item name="android:windowActionBar">false</item>
        <item name="windowActionBar">false</item>
    </style>

    <style name="FullscreenTheme" parent="AppTheme">
        <item name="android:windowBackground">@null</item>
        <item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
        <item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>

        <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
        <item name="android:windowActionBarOverlay">true</item>
        <!--For compatibility-->
        <item name="actionBarStyle">@style/FullscreenActionBarStyle</item>
        <item name="windowActionBarOverlay">true</item>
    </style>

    <style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">
        <item name="background">@color/black_overlay</item>
        <item name="android:background">@color/black_overlay</item>
    </style>

    <style name="ActionBarTitle" parent="TextAppearance.Widget.AppCompat.Toolbar.Title">
        <item name="android:textSize">50sp</item>
    </style>
</resources>

“black_overlay”颜色值为#66000000

我正在使用 AppCompat 和支持库 v24.2.1

你知道如何去掉这个文本背景吗?

干杯。

【问题讨论】:

【参考方案1】:

正如您在下面的issue 中看到的,问题来自属性app:theme。它适用于视图组膨胀的每个视图。 将app:theme 替换为style

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_
    android:layout_
    style="@style/FullscreenActionBarStyle"
    app:titleTextAppearance="@style/ActionBarTitle"/>

【讨论】:

完美,很酷的是你可以同时使用app:theme并设置你想要的所有属性,除了背景保持在style【参考方案2】:

好的,删除 FullscreenActionBarStyle 样式的背景属性并将其放入 Toolbar 布局定义中即可。 正如@apelsoczi 指出的那样,在工具栏样式中设置这些属性也会将它们应用于子组件。

【讨论】:

【参考方案3】:

在 Toolbar 中封装一个 TextView 并设置它的值。

<android.support.v7.widget.Toolbar
        ...>
        <TextView ... />
</android.support.v7.widget.Toolbar>

【讨论】:

嗯,这是一个 hacky 解决方法,而不是最好的解决方案:D 如果这对您有用 - 请选择答案作为选择的解决方案,以正式关闭 *** 上的问题。关于为什么会发生这种情况的一点见解:请记住,工具栏是一个具有多个子布局和其他视图的视图组,您为视图组更改的属性将始终由子级继承。

以上是关于工具栏上的文本背景问题的主要内容,如果未能解决你的问题,请参考以下文章

浏览器上的图像和文本剪辑工具如何工作? (印象笔记、剪贴板、snip.it 等)

如何检测 UINavigationController 工具栏背景上的触摸

将文本创建为位图的工具(消除锯齿文本、自定义间距、透明背景)

如何更改 Android 选项菜单的背景?

文本选择上的CKEDITOR内联编辑器工具栏[关闭]

Photoshop 基础三 制作简单按钮