14

我正在使用 Material 设计库并使用CoordinatorLayout,AppBarLayoutRecyclerViewTabLayout.

我的问题是我无法在Tablayout.Below 中看到 Tab 指示器。下面是我正在使用的 xml 文件AppCompactActivity

<android.support.design.widget.CoordinatorLayout
        android:id="@+id/coodinate_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/btn_next_screen">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/list_recycle"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="30dp"
            android:background="@color/white"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"

            />

        <android.support.design.widget.AppBarLayout
            android:id="@+id/abar_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar_home"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="?attr/colorPrimary"
                android:minHeight="?attr/actionBarSize"
                app:layout_scrollFlags="scroll|enterAlways"

                >


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

            <android.support.design.widget.TabLayout
                android:id="@+id/tab_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:tabBackground="@color/tab_bg"
                app:tabIndicatorColor="@color/tab_indicator"
                app:tabIndicatorHeight="5dp"
                app:tabMode="fixed"

                ></android.support.design.widget.TabLayout>


        </android.support.design.widget.AppBarLayout>


        <android.support.design.widget.FloatingActionButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"
            app:layout_anchor="@+id/list_recycle"
            app:layout_anchorGravity="bottom|right"
            android:id="@+id/floatin_ab_home"
            app:fabSize="mini"
            android:src="@drawable/ic_content_add"

            />


    </android.support.design.widget.CoordinatorLayout> 

下面是没有显示选项卡指示器的屏幕,所以任何人都可以知道我缺少什么。

屏幕缺少选项卡指示器

4

6 回答 6

31

我认为这是设计支持库的错误。当您同时应用这两个属性时

app:tabBackground="@color/tab_bg"
app:tabIndicatorColor="@color/tab_indicator"

背景颜色选项卡指示器重叠 。这就是标签指示器不可见的原因。

如果您删除 tabBackground 颜色属性,那么您可以看到指示器。

[2015 年 6 月 25 日更新]

正如我所说,这是设计支持库上的错误。我将它报告给 android bug 源。这是参考https://code.google.com/p/android/issues/detail?id=176540

因此,此问题的状态是FutureRelease,因此已修复错误。它将出现在未来的图书馆中。

[2015 年 7 月 20 日更新]

该错误已修复并在 v 22.2.1 中发布。你也可以在上面的链接上查看。

于 2015-06-12T06:22:05.387 回答
12

您可以使用以下方法

1 更改 xml app:tabIndicatorColor="" 设置您的指示器颜色

2 打造服装主题

<style name="AppTheme.TabStyle" parent="Widget.Design.TabLayout">
        <item name="tabTextAppearance">@style/AppTheme.TextStyle</item>
        <item name="tabTextColor">@color/primaryDark</item>
        <item name="tabSelectedTextColor">@color/white</item>
        <item name="tabIndicatorColor">@color/primaryDark</item>
        <item name="tabIndicatorHeight">3dp</item>
        <item name="android:background">?attr/colorPrimary</item>
    </style>

    <style name="AppTheme.TextStyle" parent="TextAppearance.Design.Tab">
        <item name="android:textSize">14sp</item>
        <item name="textAllCaps">true</item>
    </style>

在您的 Tablayout 中设置主题

于 2015-08-25T05:40:41.333 回答
0

您使用 RecyclerView 作为主要内容,使用包含 RecyclerView 的 ViewPager 并确保您提供 viewpage 属性app:layout_behavior="@string/appbar_scrolling_view_behavior"

于 2015-06-12T07:09:43.957 回答
0

我刚刚以编程方式修复了这个错误集背景颜色

tabLayout.setBackgroundColor(getResources().getColor(R.color.primary));

或在 xml

android:background="@color/primary"

但是不知道这样设置背景颜色有没有问题

于 2015-06-25T17:21:07.227 回答
0

干得好.. :)

改变你的属性

应用程序:tabBackground =“@color/tab_bg”

机器人:背景=“@color/tab_bg”

你的最终代码..

 <android.support.design.widget.TabLayout
            android:id="@+id/tab_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/tab_bg"
            app:tabIndicatorColor="@color/tab_indicator"
            app:tabIndicatorHeight="5dp"
            app:tabMode="fixed">
 </android.support.design.widget.TabLayout>
于 2015-09-29T13:49:09.707 回答
0

如果有人仍然面临这个问题,这是我现有应用程序中的工作示例,请尝试使用它并根据您的需要进行修改。

 <com.google.android.material.tabs.TabLayout
    android:id="@+id/homeScreenTab"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:background="@color/design_default_color_primary_dark"
    app:tabIndicatorColor="@color/black"
    app:tabGravity="fill"
    app:tabIndicatorHeight="3dp"
    app:tabMaxWidth="0dp"
    app:tabMode="fixed"
    app:tabSelectedTextColor="@android:color/white" />
于 2021-01-04T12:02:07.750 回答