android 禁用父视图时禁用子视图触摸

k97glaaz  于 2023-09-28  发布在  Android
关注(0)|答案(1)|浏览(100)

我正在创建一个可单击的自定义视图来替换android.widget.SwitchSwitch),使用onDraw而不是额外的Drawable。当我以前使用Switch时,如果父项被禁用,Switch也是不可点击的,但是当我迁移到我的自定义视图时,当父项被禁用时,它仍然是可点击的。我如何知道是否应该禁用/忽略点击?
自定义视图父启用x1c 0d1x
自定义视图父项禁用(仍然可单击!)

Switch父禁用(不可点击)

我的代码

public class MySwitch extends View {

  public boolean onTouchEvent(MotionEvent motionEvent) {
    if (isClickable() && isEnabled()) {
      //do something
    }
  }

  protected void onDraw(Canvas canvas) {
    //draw track and thumb
  }

}
bihw5rsg

bihw5rsg1#

您可以尝试将父节点验证为ViewGroup,如下所示。

public boolean onTouchEvent(MotionEvent motionEvent) {
    ViewGroup parent = (ViewGroup) getParent();
    Log.d(TAG, "onTouchEvent: parent enabled: " + parent.isEnabled());
}

相关问题