setStateListAnimator(null) 后无法获得 onClick() 回调

Can't get onClick() call back after setStateListAnimator(null)

标题很漂亮self-explanatory,我有个按钮叫setStateListAnimator(null);。我还注册了 OnClickListener 回调。问题是每当我调用 setStateListAnimator(null) 时,我都没有收到 onClick().

的回调
<Button android:id="@+id/urlSubmittButton"
    android:layout_below="@id/editLyout"
    android:layout_width="150dp"
    android:layout_height="45dp"
    android:text="Add"
    android:layout_marginTop="10dp"
    android:textSize="18sp"
    android:layout_centerHorizontal="true"
    android:gravity="center"
    android:padding="5dp" />

在我的 Fragment 中:

urlSubmitButton = (Button) mView.findViewById(R.id.urlSubmittButton);

urlSubmitButton.setClickable(true);
urlSubmitButton.setEnabled(true);
urlSubmitButton.setOnClickListener(this);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    urlSubmitButton.setStateListAnimator(null);
}

如您所见,我尝试将 Button 设置为可点击并启用,但它不会改变行为。然而,简单地评论那行代码很有魅力。

这是 API 24 的预期行为吗?因为到目前为止,我只能在 API 24 台设备上重现此问题。如果没有,那么有没有其他方法可以停止 stateListAnimator,这会在单击时导致 Button 中出现 water-drop-ripple-effect?

If not, then is there any other way of stopping stateListAnimator which causes a water-drop-ripple-effect in Button when clicked?

首先,我不认为 stateListAnimator 与涟漪效应有某种联系。 Ripple 只是设置为 Button 的背景,而 stateListAnimator 指定根据视图的当前状态执行什么动画。查看 StateListDrawable 中的状态。

为了完全隐藏波纹效果,请将此应用到您的 activity 样式:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  ...
  <item name="selectableItemBackground">@null</item>
  <item name="selectableItemBackgroundBorderless">@null</item>
</style>