在setStateListAnimator(null)之后无法调用onClick()

时间:2017-07-04 06:31:03

标签: android android-view android-button android-7.0-nougat rippledrawable

标题非常明显,我有一个按钮,我称之为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时出现水滴效果?

1 个答案:

答案 0 :(得分:0)

  

如果没有,那么还有其他方法可以阻止stateListAnimator Button点击时stateListAnimator产生水滴涟漪效应吗?

首先,我不认为Button与涟漪效应有某种联系。 Ripple只是设置为stateListAnimator的背景,而<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> ... <item name="selectableItemBackground">@null</item> <item name="selectableItemBackgroundBorderless">@null</item> </style> 指定基于视图的当前状态执行的动画。请参阅StateListDrawable中的状态。

为了完全隐藏涟漪效果,请将其应用于您的活动风格:

$client = new Client();

$requests = function ($total) use ($client) {
    $uri = 'http://localhost/';
    for ($i = 0; $i < $total; $i++) {
        yield function() use ($client, $uri) {
            return $client->requestAsync($uri);
        };
    }
};

$pool = new Pool($client, $requests(100));