【问题标题】:Custom LayerDrawable: onStateChange never called自定义 LayerDrawable:onStateChange 从未调用
【发布时间】:2013-12-04 02:38:18
【问题描述】:

我扩展了 LayerDrawable 以在按下我的 ImageButtons 时自动更改 Alpha 值:

    protected class CustomDrawable extends LayerDrawable {

    protected int _pressedAlpha = 60;

    public CustomDrawable(Drawable d) {
        Log.d(TAG, "constructor");
        super(new Drawable[] { d });
    }

    /**
     * Wenn sich der Status auf pressed ändert, soll der Alphawert sich auf _pressedAlpha ändern. Wenn sich der
     * Status von pressed wieder auf normal ändert soll der ursprüngliche Alphawert gesetzt werden
     */
    @Override
    protected boolean onStateChange(int[] states) {

        Log.d(TAG, "status changed: " + states);

        boolean pressed = false;

        for (int state : states) {
            if (state == android.R.attr.state_pressed)
                pressed = true;
        }

        mutate();

        if (pressed) {
            setAlpha(_pressedAlpha);
        } else {
            setAlpha(100);
        }

        invalidateSelf();

        return super.onStateChange(states);
    }
}

构造函数被调用并且 Drawable 是正确的,但是当我按下 ImageButton 时,永远不会调用 onStateChange() 方法。有人可以帮帮我吗?

【问题讨论】:

    标签: imagebutton alpha layerdrawable


    【解决方案1】:

    我认为您也需要覆盖 isStateful() 方法。我有一个类似的问题并添加它修复了它:

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

    请参阅this answer 中的代码以解决类似问题。

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 2022-12-14
      • 2021-03-10
      • 1970-01-01
      相关资源
      最近更新 更多