一: 实现的目标
点击Android 中Tablayout 的各个Tab时,有ripple(水波纹)效果,并且水波纹范围并不局限于Tab的宽高,即下面的无界波纹
二:解决探索:
经过Google 发现,Android 5.0 以上 ripple 效果的使用大致为以下[1]
所以使用Ripple的关键就在android:backgroud中设置。
点击效果主要分为2类:
一 : 有边界波纹:写法如下
android:background="?android:attr/selectableItemBackground"
二 : 无边界波纹(波纹的大小不局限于目标View的大小):写法如下
android:background="?android:attr/selectableItemBackgroundBorderless"
原本想,这么简单,直接设置到Tablayout的 Tab 的 CustomView 中的根布局就好了。
结果发现,这么做都不行。ripple的效果是有了,但是ripple的范围是局限在每个Tab的大小之内
最后发现这种做法不可行。怀疑与 Tablayout 有关,最后google发现可以通过如下方法解决[2]:
主要是设置在TabLayout 的 app:tabBackground="?attr/selectableItemBackground" 属性上
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:minHeight="?attr/actionBarSize"
android:layout_width="match_parent"
app:tabBackground="?attr/selectableItemBackground"
android:layout_height="wrap_content"/>
亲测可以。
[2]. https://stackoverflow.com/questions/31605514/tablayout-highlite-and-ripple-effect