我定义了这个选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- PRESSED -->
<item android:state_pressed="true"
android:drawable="@drawable/backarrow_blueshiny" />
<!-- FOCUSED -->
<item android:state_focused="true"
android:drawable="@drawable/backarrow_blackshiny" />
<!-- DEFAULT -->
<item android:drawable="@drawable/backarrow_blackshiny" />
</selector>
它与此按钮一起使用:
<RelativeLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/bottomborder_glossy">
<!-- BACK -->
<ImageButton
android:id="@+id/filter_button_back"
android:layout_width="90dip"
android:layout_height="wrap_content"
android:src="@drawable/selector_back_button"
android:background="#00000000"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
onTouch 事件包括:
public boolean onTouch(View v, MotionEvent event)
{
final int actionPerformed = event.getAction();
final int widgetID = v.getId();
if (actionPerformed == MotionEvent.ACTION_UP)
{
switch (widgetID)
{
case R.id.filter_button_back:
{
this.finish();
break;
}
}
}
return false;
}
该按钮的作用是退出当前活动this.finish()
然而,在我的测试中,按钮并不总是切换到“backarrow_blueshiny” - 即当按下非常快时。
所以问题是选择器的触发速度比 onTouch(MotionEvent.ACTION_UP) 事件慢。
我可以做些什么来确保选择器不“滞后”?
尝试在 OnTouchListener 中以编程方式将视图设置为按下:
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
button.setPressed(true);
break;
case MotionEvent.ACTION_UP:
// optional, should work without next line
// button.setPressed(false);
break;
}
return false;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)