将clickable()设置为false在Android ChromeCast上不起作用;s MediaRouterButton

将clickable()设置为false在Android ChromeCast上不起作用;s MediaRouterButton,android,android-view,chromecast,android-touch-event,Android,Android View,Chromecast,Android Touch Event,我的android设备中有一个chromecast的MediaRouterButton。 现在我想以编程方式启用/禁用其单击,因此我有这样一行代码: mediaButton.setClickable( false ). 但是它没有禁用点击,chromecast对话框仍然会显示 我试着检查源代码,它会覆盖performClick()方法,但是在我为这个方法设置断点并进行调试之后,我在堆栈中除了这个performClick()之外找不到其他方法 谁能告诉我为什么会这样 最后,我有一个工作要做 只需

我的android设备中有一个chromecast的MediaRouterButton。 现在我想以编程方式启用/禁用其单击,因此我有这样一行代码:

mediaButton.setClickable( false ).
但是它没有禁用点击,chromecast对话框仍然会显示

我试着检查源代码,它会覆盖performClick()方法,但是在我为这个方法设置断点并进行调试之后,我在堆栈中除了这个performClick()之外找不到其他方法


谁能告诉我为什么会这样

最后,我有一个工作要做

只需重写MediaRouteButton,重写其performClick()方法,插入您想要执行的逻辑

public class CustomizedChromesCastButton extends MediaRouteButton {
    private boolean enable = true;
    public CustomizedChromesCastButton( Context context ){
        super( context );
    }
    public CustomizedChromesCastButton(Context context, AttributeSet attrs){
        super( context, attrs );
    }
    public CustomizedChromesCastButton(Context context, AttributeSet attrs, int defStyleAttr){
        super( context, attrs, defStyleAttr );
    }

    public void setCastEnable( boolean enable ){
        this.enable = enable;
    }

    public boolean performClick(){
        if( enable ){
            return super.performClick();
        }
        else {
            return false;
        }
    }
}

使用setEnabled()而不是setClickable(),它不起作用。。。mediaroutebutton实际上是直接从视图扩展而不是从按钮扩展。您试图做的是违背强制转换按钮的预期设计,您的用例是什么?当我滑动主Imageview时,我想设置工具栏中所有按钮的alpha值并禁用它们,我想知道为什么会发生这种情况?按钮只是从视图类扩展而来,为什么我不能将其设置为不可点击?谢谢你,兄弟