繁体   English   中英

当单张图像按下时更改按钮颜色

[英]Change button color when pressed with a single image

我有一个按钮,它是九个补丁的图像。 我不想为“按下”状态( StateListDrawable要求)提供其他图像。 我只希望它在按下时变得“更暗”(就像iOS按钮一样)。 我该如何实现?

使用这样的东西:

public class MyStateDrawable extends LayerDrawable {

    public MyStateDrawable(Drawable[] layers) {
        super(layers);
    }

    @Override
    protected boolean onStateChange(int[] states) {
        for (int state : states) {
            if (state == R.attr.state_activated || state == android.R.attr.state_pressed) {
                super.setColorFilter(0x7f000000, Mode.SRC_ATOP);
                return true;
            } else if(state == -android.R.attr.state_activated || state == -android.R.attr.state_pressed){
                super.setColorFilter(0x00000000, Mode.SRC_ATOP);
                return true;
            }else {
                super.setColorFilter(null);
            }
        }
        return super.onStateChange(states);
    }

    @Override
    public boolean isStateful() {
        return true;
    }
}

接着

StateDrawable state = new MyStateDrawable(new Drawable[]{mDefaultDrawable});
view.setImageDrawable(state);

希望这个能对您有所帮助 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM