当父级禁用时禁用子视图触摸

问题描述 投票:0回答:1

我正在创建一个可点击的自定义视图来替换

android.widget.Switch
(
Switch
),使用
onDraw
而不是额外的
Drawable
。当我以前使用
Switch
时,如果禁用了父项,则
Switch
也不可单击,但是当我迁移到自定义视图时,当父项禁用时它仍然是可单击的。我如何知道是否应该禁用/忽略点击?


启用自定义视图父级

自定义视图父级已禁用(仍然可单击!)

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
  }

}
java android android-custom-view touch-event user-experience
1个回答
0
投票

您可以尝试将父级验证为

ViewGroup
,如下所示。

public boolean onTouchEvent(MotionEvent motionEvent) {
    ViewGroup parent = (ViewGroup) getParent();
    Log.d(TAG, "onTouchEvent: parent enabled: " + parent.isEnabled());
}
© www.soinside.com 2019 - 2024. All rights reserved.