setClickable() 设置为 false 将无法在 Android ChromeCast 的 MediaRouterButton 上工作

setClickable() to false wont work on Android ChromeCast's MediaRouterButton

我的 android 设备中有一个用于 chromecast 的 MediaRouterButton。 现在我想以编程方式 enable/disable 它的点击,所以我有这样一行代码:

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;
        }
    }
}