I know this is a stupid question but a google search did not give me a good answer. I have a button in my activity but when I press it, I cannot visually see it. Although the button works just fine. I know I have to do something in the xml file but I'm not sure what. Is there a way to automatically make the image button change slightly without me having to manually upload two pictures?
            Asked
            
        
        
            Active
            
        
            Viewed 575 times
        
    3
            
            
        - 
                    Can you please check this link. I think this is what you looking for. http://stackoverflow.com/a/14810912 – Anirban Pal Apr 27 '14 at 04:41
2 Answers
1
            
            
        You can disable the button if u want by using
   button.setEnabled(false);
& can also be enabled again using
   button.setEnabled(true);
EDIT:
You can also try by changing the background color of Button by
 onClick()
 {
  button.setBackgroundColor(#CCCCCC);
 }
1
            import android.content.Context;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.LightingColorFilter;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.util.AttributeSet;
import android.widget.Button;
/**
 * Applies a pressed state color filter or disabled state alpha for the button's background
 * drawable.
 *
 * @author shiki
 */
public class SAutoBgButton extends Button {
  public SAutoBgButton(Context context) {
    super(context);
  }
  public SAutoBgButton(Context context, AttributeSet attrs) {
    super(context, attrs);
  }
  public SAutoBgButton(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
  }
  @Override
  public void setBackgroundDrawable(Drawable d) {
    // Replace the original background drawable (e.g. image) with a LayerDrawable that
    // contains the original drawable.
    SAutoBgButtonBackgroundDrawable layer = new SAutoBgButtonBackgroundDrawable(d);
    super.setBackgroundDrawable(layer);
  }
  /**
   * The stateful LayerDrawable used by this button.
   */
  protected class SAutoBgButtonBackgroundDrawable extends LayerDrawable {
    // The color filter to apply when the button is pressed
    protected ColorFilter _pressedFilter = new LightingColorFilter(Color.LTGRAY, 1);
    // Alpha value when the button is disabled
    protected int _disabledAlpha = 100;
    public SAutoBgButtonBackgroundDrawable(Drawable d) {
      super(new Drawable[] { d });
    }
    @Override
    protected boolean onStateChange(int[] states) {
      boolean enabled = false;
      boolean pressed = false;
      for (int state : states) {
        if (state == android.R.attr.state_enabled)
          enabled = true;
        else if (state == android.R.attr.state_pressed)
          pressed = true;
      }
      mutate();
      if (enabled && pressed) {
        setColorFilter(_pressedFilter);
      } else if (!enabled) {
        setColorFilter(null);
        setAlpha(_disabledAlpha);
      } else {
        setColorFilter(null);
      }
      invalidateSelf();
      return super.onStateChange(states);
    }
    @Override
    public boolean isStateful() {
      return true;
    }
  }
}
To use this, just replace your original button declarations like this:
<Button
  android:layout_width="wrap_content" android:layout_height="wrap_content"
  android:background="@drawable/button_blue_bg"
  android:text="Button with background image" />
do this:
<com.buttondemo.SAutoBgButton
  android:layout_width="wrap_content" android:layout_height="wrap_content"
  android:background="@drawable/button_blue_bg"
  android:text="Button with background image" />
Here’s a sample output using this custom button:
Hope its worked

 
    
    
        Bhavesh Jethani
        
- 3,891
- 4
- 24
- 42
