Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 禁用按钮单击动画而不禁用设置启用(false)_Java_Android_Button_Onclick - Fatal编程技术网

Java 禁用按钮单击动画而不禁用设置启用(false)

Java 禁用按钮单击动画而不禁用设置启用(false),java,android,button,onclick,Java,Android,Button,Onclick,我有一个LienarLayout,里面有一个按钮。我在按钮和线性布局上都有一个OnClickListener。在某些时候,我想禁用按钮,并将onClick事件传递给父线性布局。我发现您可以通过设置按钮.setClickable(flase)来实现这一点。它工作正常,LinearLayout获得单击,但是按钮的单击动画仍在播放。更糟糕的是,如果我单击未绘制按钮的线性布局,按钮单击动画仍会播放 如果有人知道我怎样才能达到我想要的,我将不胜感激 注意:我不想使用按钮。setEnabled(false)

我有一个
LienarLayout
,里面有一个
按钮。我在
按钮和
线性布局上都有一个
OnClickListener
。在某些时候,我想禁用
按钮
,并将
onClick
事件传递给父
线性布局
。我发现您可以通过设置
按钮.setClickable(flase)
来实现这一点。它工作正常,
LinearLayout
获得单击,但是
按钮的单击动画仍在播放。更糟糕的是,如果我单击未绘制
按钮的
线性布局
,按钮单击动画仍会播放

如果有人知道我怎样才能达到我想要的,我将不胜感激

注意:我不想使用
按钮。setEnabled(false)
的原因是我不想让按钮看起来被禁用。我还希望能够根据需要启用/禁用按钮的可点击状态。因此,基本上我希望按钮有时处于活动状态,然后在其他时间单击以传递到LinearLayout

代码-xml:

<LinearLayout
    android:id="@+id/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="?android:attr/selectableItemBackground">

    <Button
        android:id="@+id/button"
        style="?android:attr/buttonBarButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="button"/>

</LinearLayout>
单击之前: 单击线性布局时:

您可以简单地为
背景设置颜色,这样动画就不会出现

android:background="@android:color/white"
当您想要返回可单击动画时,请使用此选项

TypedValue outValue = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true);
yourButton.setBackgroundResource(outValue.resourceId);

这将解决此问题。

当您不想实现单击时,可以使用
按钮。setOnClickListener(null)
并可以根据需要在将来的任何时候设置侦听器。我可以建议一些解决方法:1)使用触摸侦听器而不是单击。2) 将静态图像背景设置为按钮(不可绘制状态),3)在按钮上放置一些可单击的视图,这样它将捕获所有单击。我如何在使其再次可单击后将其恢复到正常状态?
TypedValue outValue = new TypedValue();
getContext().getTheme().resolveAttribute(android.R.attr.selectableItemBackground, outValue, true);
yourButton.setBackgroundResource(outValue.resourceId);