gpt4 book ai didi

java - 在没有 setEnabled(false) 的情况下禁用按钮单击动画

转载 作者:行者123 更新时间:2023-11-29 04:32:29 28 4
gpt4 key购买 nike

我有一个 LienarLayout,里面有一个 Button。我在 ButtonLinearLayout 上都有一个 OnClickListener。在某些时候,我想禁用 Button 并将 onClick 事件传递给父级 LinearLayout。我发现您可以通过设置 Button.setClickable(flase) 来实现此目的。这有效并且 LinearLayout 获得了点击,但是 Button 的点击动画仍然播放。更糟糕的是,如果我单击未绘制 ButtonLinearLayout,按钮单击动画仍然会播放!

如果有人知道我如何实现我想要的,我将不胜感激。

P.S.:我不想使用 Button.setEnabled(false) 的原因是我不希望按钮看起来被禁用。我还希望能够按需启用/禁用按钮的可点击状态。所以基本上我希望按钮有时处于 Activity 状态,然后其他时间处于 Activity 状态,以便点击传递到 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>

代码 - java:

Button btn = (Button) view.findViewById(R.id.button);
btn.setClickable(false);

点击前: Before click在点击 LinearLayout 期间: During click on LinearLayout

最佳答案

你可以简单地给 background 颜色,这样动画就不会发生。

android:background="@android:color/white"

当你想要返回可点击的动画时,使用这个

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

这将解决这个问题。

关于java - 在没有 setEnabled(false) 的情况下禁用按钮单击动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43275507/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com