如何将TabLayout背景设置为透明

10
我需要将TabLayout(扩展HorizontalScrollView)的背景更改为透明,而不更改样式中的主要颜色。如果我将背景设置为#00000000,则会变成primaryColor。如果我将alpha设置为0,则会得到相同的行为。

输入图像描述

<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#00000000"
        android:hapticFeedbackEnabled="true"/>

有没有办法将背景颜色设置为透明,而不改变样式颜色?


尝试将此设置为背景 @android:color/transparent - Michele Lacorte
它链接到<color name="transparent">#00000000</color>,与我的XML文件中的颜色相同。 - onCreate
在 @onCreate 方法中放置完整的 XML 布局。 - Michele Lacorte
1
如果我将背景设置为#00000000,它就会变成primaryColor。不是这样的。它是透明的(意味着看不见)。因此你可以透过它看到父元素的背景颜色。 - Phantômaxx
你解决了这个问题吗?我也遇到了这个问题。在styles.xml中设置全局背景颜色似乎会覆盖你在TabLayout上设置的任何背景。 - Kris B
4个回答

12

使用:

 android:background="@android:color/transparent"

同样适用于AppBarLayout组件。 要去掉阴影以使其更美观,您可以使用以下代码去除AppBarlayout的高程:

 app:elevation="0dp"

5
如果您正在使用 <android.support.design.widget.AppBarLayout />,您需要将 TabLayout 放在其外部。
<!-- App Bar -->
<android.support.design.widget.AppBarLayout
        android:id="@+id/appBarLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/app_bar"
            ......
            android:background="@color/app_bar_color"
            app:layout_scrollFlags="scroll|enterAlways" />
    </android.support.design.widget.AppBarLayout>

<!-- Tab Layout -->
<android.support.design.widget.TabLayout
       android:id="@+id/tabs"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="@android:color/transparent"
       android:hapticFeedbackEnabled="true"/>

The Result will be like this


3

试试这个

<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:alpha="0.3"
    android:background="@android:color/black"
    android:hapticFeedbackEnabled="true"/>

对我来说它有效。


0

使用Kotlin编写的代码

首先,我们将创建CustomTabLayout

import android.content.Context
import android.graphics.Color
import android.util.AttributeSet
import com.google.android.material.tabs.TabLayout

class CustomTabLayout : TabLayout {
    constructor(context: Context) : super(context)
    constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
    constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
        context,
        attrs,
        defStyleAttr
    )

    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
        setBackgroundColor(Color.TRANSPARENT)
    }
}

然后我们将直接在布局文件中使用它

<com.packagename.CustomTabLayout
                        android:id="@+id/tab"
                        app:tabInlineLabel="true"
                        app:tabIndicator="@null"
                        android:layout_marginTop="8dp"
                        android:layout_marginHorizontal="16dp"
                        app:tabBackground="@null"
                        android:hapticFeedbackEnabled="true"
                        app:tabIndicatorHeight="0dp"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        tools:layout_height="40dp" />

它将使用透明背景工作选项卡布局,请告诉我是否需要关于此问题的其他帮助。


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