setClickable()为false将无法在Android ChromeCast的MediaRouterButton上运行

时间:2015-12-30 10:12:53

标签: android android-view chromecast android-touch-event

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

mediaButton.setClickable( false ).

但它没有禁用其点击,Chromecast对话框仍会显示。

我尝试检查它的源代码,它会覆盖performClick()方法,但在我设置了一个断点到这个方法并调试之后,除了这个performClick()之外,我找不到堆栈中的任何方法。

谁能告诉我为什么会这样?

1 个答案:

答案 0 :(得分:0)

最后我有一个解决方法......

只需覆盖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;
        }
    }
}