【发布时间】:2011-10-11 18:16:59
【问题描述】:
我想滥用标准按钮作为切换按钮,但仅限于长按。因此,我首先将默认样式替换为按下、聚焦和默认状态的背景图片。
<?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。我怎样才能按住按钮?使用切换按钮不起作用,因为应该可以进行正常的单击操作。如果按钮被长时间按下,按钮会被“锁定”。
非常感谢
【问题讨论】:
-
长按替换 btn.setPressed(true); with btn.setBackgroungResource(R.drawable.btn_pressed);
-
非常感谢,它有效。我不确定它是否是“干净”的方式,但到目前为止它给了我想要的结果。
标签: android button background