我对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>
但它不起作用。
答案 0 :(得分:7)
另一种适合我的解决方案
<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"/>
我刚刚添加了以下行
<强>机器人:背景=&#34; @颜色/ colorPrimary&#34; 强>
应用:tabBackground =&#34; ATTR / selectableItemBackground&#34; 强>
答案 1 :(得分: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 -->
答案 2 :(得分:0)
要删除突出显示的内容,请将以下行添加到XML:
app:tabRippleColor="@android:color/transparent"
答案 3 :(得分:0)
或者,您可以通过编程使波纹透明:
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")))
}
}
此方法还可用于为每个标签设置自己的波纹颜色。