Android按钮setPressed不会改变动画
问题描述:
我想滥用标准按钮作为切换按钮,但只有当它的longpressed。因此,我首先将背景图像替换为默认样式,以获得按下,聚焦和默认状态。Android按钮setPressed不会改变动画
<?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。我怎样才能保持按钮按下?使用切换按钮不起作用,因为应该可以进行正常的点击操作。如果按钮按下的时间较长,则该按钮会“锁定”。
非常感谢
答
所以最后为comparred使按钮状态deliberatly真正
@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;
}
上长按代替btn.setPressed(真),它works.It的正确方法;与btn.setBackgroungResource(R.drawable.btn_pressed); –
非常感谢,它的作品。我不确定它是否是'干净'的方式,但它迄今给我带来了期望的结果。 – Alx