title: Custom View not responding to touches
body: <p>I've created a custom view which should change it's background image when pressed, highlighted or disabled. The app runs but the button doesn't change it's background.</p>
  
  <p>here's my code:</p>
  
  <pre><code>public class CustomImageButton extends View {
  
  public CustomImageButton(Context context) {
  super(context);
  setFocusable(true);
  setClickable(true);
  }
  
  public CustomImageButton(Context context, AttributeSet attrs) {
  super(context, attrs);
  setFocusable(true);
  setClickable(true);
  }
  public CustomImageButton(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);
  setFocusable(true);
  setClickable(true);
  }
  
  protected Drawable background = super.getBackground();
  
  
  @Override
  public void setBackgroundDrawable(Drawable d) {
  // Replace the original background drawable (e.g. image) with a LayerDrawable that
  // contains the original drawable slightly edited.
  
  CustomImageButtonBackgroundDrawable layer = new CustomImageButtonBackgroundDrawable(d);
  super.setBackgroundDrawable(layer);
  }
  
  public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
   int drawableWidth = super.getBackground().getMinimumWidth();
   int drawableHeight = super.getBackground().getMinimumHeight();
   setMeasuredDimension(drawableWidth, drawableHeight);
  }
  
  protected class CustomImageButtonBackgroundDrawable extends LayerDrawable { 
  
      protected Drawable lowerlayer;
      protected Drawable _highlightedDrawable;
  
      protected int _disabledAlpha = 100;
      protected Drawable _pressedDrawable;
  
  
      public CustomImageButtonBackgroundDrawable(Drawable d) {
            super(new Drawable[] { d });
      }
  
      @Override
      protected boolean onStateChange(int[] states) {
        boolean enabled = false;
        boolean highlighted = false;
        boolean pressed = false;
  
        for (int state : states) {
          if (state == android.R.attr.state_enabled)
              enabled = true;
          else if (state == android.R.attr.state_selected)
              highlighted = true;
          else if (state == android.R.attr.state_pressed)
              pressed = true;
        }
  
        mutate();
        if (enabled &amp;&amp; highlighted) {
          ColorFilter colourFilter = new LightingColorFilter(Color.YELLOW, 1);
          ScaleDrawable resizedImage = new ScaleDrawable(background, 0, 1.25f, 1.25f);
  
          lowerlayer = resizedImage.getDrawable();
          lowerlayer.setColorFilter(colourFilter);
  
          Drawable[] aD = new Drawable[2];
          aD[0] = lowerlayer;
          aD[1] = background;
          LayerDrawable _highlightedDrawable = new LayerDrawable(aD);
  
          setBackgroundDrawable(_highlightedDrawable); // buttons need transparent backgrounds
  
        } else if (!enabled) {
          setColorFilter(null);
          setAlpha(_disabledAlpha);
  
        } else if (enabled &amp;&amp; pressed){
          ScaleDrawable smaller = new ScaleDrawable(background, 0, 0.75f, 0.75f);
  
          setBackgroundDrawable(smaller.getDrawable());
  
        } else if(enabled){
          setBackgroundDrawable(background);  
          setColorFilter(null);
        }
  
        invalidateSelf();
  
        return super.onStateChange(states);
      }
  
  }
  
  }
  </code></pre>
  
  <p>Here's my xml:</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
  &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#ffffff"&gt;
  
  &lt;ImageButton
      android:id="@+id/title"
      android:layout_width="250dp"
      android:layout_height="58dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:layout_margin ="25dp"
      android:background="@drawable/skintonetitle" /&gt;
  
  &lt;custombuttons.CustomImageButton
      android:id="@+id/skina1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignLeft="@+id/title"
      android:layout_below="@+id/title"
      android:layout_marginTop="35dp"
      android:background="@drawable/test_circle"
      android:clickable="true"
      android:focusable="true" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>
  
  <p>Something I've missed?</p>