【问题标题】:TabLayout highlite and Ripple effectTabLayout 高亮和波纹效果
【发布时间】:2015-07-24 08:19:33
【问题描述】:

我有两个关于 TabLayout 的问题

1)我可以去掉 TabLayout 高亮或者改变标签布局的高亮颜色吗?

2) 我可以为标签添加波纹效果吗?每个选项卡都包含 TextView 我尝试添加类似这样的自定义背景

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <item android:drawable="@drawable/btn_white_bg" />
</ripple>

但它不起作用。

【问题讨论】:

  • 标记这个。如果有这个问题的解决方案,我想知道。
  • 您找到合适的解决方案了吗?我尝试了下面提到的解决方案,但波纹颜色没有改变..
  • 如果你想改变波纹颜色使用上面的代码,但是改变android:color attr 颜色。并将其设置为selectableItemBackground attr in u app theme in /values-v21

标签: android android-tablayout


【解决方案1】:

要删除突出显示,请将以下行添加到您的 XML:

app:tabRippleColor="@android:color/transparent"

【讨论】:

    【解决方案2】:

    另一个适合我的解决方案

    <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:minHeight="?attr/actionBarSize"
        android:layout_width="match_parent"
        app:tabMode="fixed"
        app:tabGravity="fill"
        android:clipToPadding="false"
        android:elevation="0dp"
        style="@style/MyCustomTabLayout"
        android:background="@color/colorPrimary"
        app:tabBackground="?attr/selectableItemBackground"
        app:tabIndicatorColor="@color/app_yellow"
        app:tabIndicatorHeight="4dip"
        android:layout_height="wrap_content"/>
    

    我刚刚添加了以下几行

    android:background="@color/colorPrimary"

    app:tabBackground="?attr/selectableItemBackground"

    【讨论】:

    • 简单而甜蜜的方法!
    【解决方案3】:

    您可以像这样自定义 TabLayout: 在值MyCustomTabLayout.xml 中创建一个 xml 文件,然后放入这些

    <resources>
    
    <style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
        <item name="tabMaxWidth">@dimen/tab_max_width</item>
         <item name="tabIndicatorColor">@color/black</item>
       <!--  <item name="tabIndicatorColor">?attr/colorAccent</item> -->
        <item name="tabIndicatorHeight">5dp</item>
        <item name="tabPaddingStart">12dp</item>
        <item name="tabPaddingEnd">12dp</item>
        <item name="tabBackground">?attr/selectableItemBackground</item>
        <item name="tabTextAppearance">@style/MyCustomTabTextAppearance</item>
        <item name="tabSelectedTextColor">?android:textColorPrimary</item>
    </style>
    
    <style name="MyCustomTabTextAppearance" parent="TextAppearance.Design.Tab">
        <item name="android:textSize">16sp</item>
        <item name="android:textColor">?android:textColorSecondary</item>
        <item name="textAllCaps">true</item>
    </style>
    

    在你的布局里面添加这个:

    <android.support.design.widget.TabLayout
            android:id="@+id/mainSlidingTab"
            style="@style/MyCustomTabLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/tool_bar"
            android:background="@color/ColorPrimary" />
        <!-- app:tabMode="scrollable" when many tabs -->
    

    【讨论】:

    • 由于某种原因现在不接受“?attr/selectableItemBackground”?我可以通过使用波纹 xml 作为 tabBackground 来解决这个问题。
    【解决方案4】:

    或者,您可以通过编程使波纹透明:

    val tabs = findViewById<TabLayout>(R.id.your_tablayout)
    
    for (n in 0 until tabs.tabCount) {
        val tab = (tabs.getChildAt(0) as ViewGroup).getChildAt(n)
        tab?.let {
            val ripple = it.background as? RippleDrawable
            ripple?.setColor(ColorStateList.valueOf(Color.parseColor("#00000000")))
        }
    }
    

    这种方法也可以用于为每个标签设置自己的波纹颜色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 2017-03-12
      • 2017-05-01
      • 2011-11-30
      • 1970-01-01
      相关资源
      最近更新 更多