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