我想滥用标准按钮作为切换按钮,但只有在其长按时才会滥用。因此,我首先将默认样式替换为按下,聚焦和默认状态的背景图像。
<?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。如何按住按钮?使用切换按钮不起作用,因为正常的点击操作应该是可行的。如果长按按钮,按钮将被“锁定”。
非常感谢
答案 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;
}