我有一个非常简单的布局,只有两个按钮在彼此之下。在两个按钮上,我将一个可绘制的图层列表设置为背景,其中包含selectableItemBackground,从而对按钮产生涟漪效应。
发生了一个奇怪的错误:在第一个按钮上,没有发生涟漪效应,但在第二个按钮上却没有。如何解释,或者它是Android /支持库中的错误?
设置点击处理程序不会改变任何内容,行为保持不变。
请参阅下面的示例gif,以及下面的XML代码。
main_activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/first_button"
android:text="First Button"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_margin="12dp"
android:background="@drawable/white_selectable_button"/>
<Button
android:id="@+id/second_button"
android:text="Second Button"
android:layout_width="match_parent"
android:layout_margin="12dp"
android:layout_height="48dp"
android:background="@drawable/white_selectable_button"/>
</LinearLayout>
white_selectable_button.xml(在res / drawable中):
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white"/>
<item android:drawable="?attr/selectableItemBackground"/>
</layer-list>
这个drawable似乎应用于按钮,因为当将颜色设置为红色时,按钮实际上显示为红色。仅未应用selectableItemBackground纹波。
我已经在所有版本上使用设计支持库24.1.1,23.4.0和23.2.0对此进行了测试,这不会改变任何内容。
编辑:向Android错误跟踪器提交错误报告:https://code.google.com/p/android/issues/detail?id=219620
答案 0 :(得分:2)
取出您的代码并确认它也无法在我的设备上运行。我将其作为bug against the Android Support Library提交。所以最终它会得到修复。
与此同时,我想出了一个简单的解决方法来修复bug。您需要做的就是在另外两个之前添加一个不可见的虚拟按钮,因为它看起来只会影响第一个按钮。一旦谷歌确定,您最终可以将其删除。
<Button
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/white_selectable_button"
android:visibility="gone" />