Android Button setPressed不会更改动画

时间:2011-10-11 18:17:00

标签: android button background

我想滥用标准按钮作为切换按钮,但只有在其长按时才会滥用。因此,我首先将默认样式替换为按下,聚焦和默认状态的背景图像。

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_pressed="true" android:drawable="@drawable/btn_pressed" /> <!-- pressed -->
        <item android:state_focused="true" android:drawable="@drawable/btn_focused" /> <!-- focused -->
        <item android:drawable="@drawable/btn_default" /> <!-- default -->

    </selector>

我实现了onClickListener和OnLongClickListener:

private OnLongClickListener mFireHoldListener = new OnLongClickListener() {

    @Override
    public boolean onLongClick(View view) {
        Log.i(TAG, "Long FIRE");

        Button btn = (Button) view;
        btn.setPressed(true);
        btn.invalidate();
        Log.i(TAG, "isPressed: " + btn.isPressed());

        return false;
    }

};

如果我执行长按,则按钮不会将其背景更改为state_pressed。如何按住按钮?使用切换按钮不起作用,因为正常的点击操作应该是可行的。如果长按按钮,按钮将被“锁定”。

非常感谢

1 个答案:

答案 0 :(得分:4)

所以最后它起作用。与使按钮状态故意为真相比,这是正确的方法

  @Override
    public boolean onLongClick(View view) {
        final Button btn = (Button) view;
        btn.post(new Runnable(
            public void run() {
                btn.setBackgroungResource(R.drawable.btn_pressed);
            }
        }

        return false;
    }