工具栏上的文本背景问题

6
当我将一些alpha添加到我的工具栏背景颜色时,我注意到标题的TextView上应用了一个背景。

Toolbar title background

这是我的布局:

<FrameLayout 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"
         xmlns:app="http://schemas.android.com/apk/res-auto"
         android:background="#0099cc">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:theme="@style/FullscreenActionBarStyle"
        app:titleTextAppearance="@style/ActionBarTitle"/>

    <ImageView
        android:id="@+id/fullscreen_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        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和Support库v24.2.1

你有什么办法可以消除这个文本背景吗?

干杯。

3个回答

11

如您在下面的问题中所见,问题来自于属性app:theme。它被应用于视图组填充的每个视图。 请将app:theme替换为style

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    style="@style/FullscreenActionBarStyle"
    app:titleTextAppearance="@style/ActionBarTitle"/>

完美,而且很酷的是,您可以同时使用app:theme并设置除背景之外的所有属性,将其保留在style中。 - Bassem Wissa

0

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


-1

将TextView封装在工具栏内并设置其值。

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

嗯,这是一个折中的解决方案,不是最好的解决方案 :D - riot
如果这对您有用,请选择答案作为所选解决方案,以正式关闭StackOverflow上的问题。关于为什么会发生这种情况的一些见解:请记住,工具栏是一个具有多个子布局和其他视图的ViewGroup,您更改ViewGroup的属性将始终被子项继承。 - apelsoczi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接