【问题标题】:Adding a line below TabLayout在 TabLayout 下面添加一行
【发布时间】:2017-07-04 03:59:19
【问题描述】:

我在尝试在TabLayout 下方添加一行时遇到问题,但它必须位于选择器行的后面。应该是这样的:

我已经尝试添加一个自定义视图,但是每个选项卡内部都有一些边距,所以没有成功。

有什么想法吗?

这是我现在得到的:

这是我在 XML 上添加它的方式:

<android.support.design.widget.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    app:tabBackground="@color/white"
    app:tabIndicatorColor="@color/colorAccent"
    app:tabTextColor="@color/white"/>

这就是我通过代码所做的:

private void configureTabLayout() {
    TabLayout.Tab tabHome = mTabLayout.newTab().setIcon(R.drawable.ic_home_cinza);
    TabLayout.Tab tabEmprestimos = mTabLayout.newTab().setIcon(R.drawable.ic_emprestimos_cinza);
    TabLayout.Tab tabPersonal = mTabLayout.newTab().setIcon(R.drawable.ic_usuario_cinza);

    View root = mTabLayout.getChildAt(0);
    if (root instanceof LinearLayout) {
        ((LinearLayout) root).setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
        GradientDrawable drawable = new GradientDrawable();
        drawable.setColor(getResources().getColor(R.color.silver));
        drawable.setSize(2, 1);
        ((LinearLayout) root).setDividerPadding(10);
        ((LinearLayout) root).setDividerDrawable(drawable);
    }

    mTabLayout.addTab(tabHome);
    mTabLayout.addTab(tabEmprestimos);
    mTabLayout.addTab(tabPersonal);
    mTabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
}

【问题讨论】:

  • 你的 xml 在哪里?如果你可以添加预期的输出
  • 其实它很简单,我会把它添加到问题中
  • 但每个标签内部都有一些边距您想在标签内或标签按钮下方添加该行吗?
  • 应该和上图一模一样。我真的很挣扎
  • 仍然没有得到那个 xoxo 。我看到下面的绿色选择器没有任何内容:[

标签: android xml android-tablayout tabbar


【解决方案1】:

在你的 Drawable 文件夹中创建一个 xml

background_line.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:top="-6dp"
        android:right="-2dp"
        android:left="-2dp"

        >
        <shape
            android:shape="rectangle">
            <solid android:color="#fff" />
            <stroke
                android:width="1dp"
                android:color="#fff" />
            <corners android:radius="@dimen/_15sdp"/>
        </shape>

    </item>

</layer-list>

将此设置为您的 TabLayout

<com.google.android.material.tabs.TabLayout
             android:id="@+id/tabs"
             android:layout_width="match_parent"
             android:layout_height="@dimen/_40ssp"
             app:tabTextColor="@color/gray"

            app:tabIndicator="@drawable/background_line"
            app:tabIndicatorColor="@color/white"

            app:tabIndicatorGravity="bottom"
            app:tabSelectedTextColor="@color/white"
            app:tabBackground="@color/bg_app"
            app:tabGravity="fill"
            />

输出 >>>

【讨论】:

    【解决方案2】:

    在你的 Drawable 文件夹中创建一个 xml

    背景.xml

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:top="-10dp" android:right="-10dp" android:left="-10dp">
            <shape 
                android:shape="rectangle">
                <solid android:color="#1bd4f6" />
                <stroke
                    android:width="2dp"
                    android:color="#0288D1" />
            </shape>
        </item>
    
    </layer-list>
    

    将此设置为您的TabLayout

      <android.support.design.widget.TabLayout
            android:background="@drawable/background"
            android:id="@+id/tabs"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            app:tabIndicatorColor="@color/colorAccent"
            app:tabTextColor="@color/white"/>
    

    根据需要更改值和颜色!

    输出:

    【讨论】:

    • @Felipe Castilhos 你检查了吗?
    • 显然我错误地尝试在选项卡上设置背景而不是选项卡布局本身。
    • @Felipe Castilhos 我很高兴它有帮助:) 如果你想要其他边缘,你可以删除负值!祝你好运
    【解决方案3】:

    你可以试试这个。解决办法

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    
        <android.support.design.widget.TabLayout
           android:id="@+id/tabs"
           android:layout_width="match_parent"
           android:layout_height="60dp"
           app:tabBackground="@color/white"
           app:tabIndicatorColor="@color/colorAccent"
           app:tabIndicatorHeight="2.5dp"
           app:tabTextColor="@color/white"/>
    
        <View
           android:layout_width="match_parent"
           android:layout_height="2.5dp"
           android:layout_gravity="bottom"
           android:background="#c6c6c6" />
    
    </FrameLayout>
    

    【讨论】:

    • 我做到了,将在 TabLayoutSelector 上显示灰线。不过谢谢你的回复。
    • 我需要一个具有固定宽度和底部边框的选项卡布局选择器。为此,您可以将&lt;View 设为FrameLayout 中的顶级子级,并将透明背景设置为选项卡布局。
    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2021-10-05
    • 2016-01-26
    • 1970-01-01
    相关资源
    最近更新 更多