最近我更新了支持设计库到24.2.0。我发现在这个版本中,对于任何FloatingActionButton
,如果我长按它,然后将手指移出它的区域,它仍然会保持按下状态(显示波纹颜色并保持较大的高度)。我怎样才能让它回到正常状态呢?
这是我的FloatingActionButton
的一个例子:
<android.support.design.widget.FloatingActionButton
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_gravity="bottom|end"
android:scaleType="center"
android:src="@drawable/act_add"
app:elevation="6dp"
app:borderWidth="0dp"
app:pressedTranslationZ="12dp"/>
似乎是设计支持库的问题。Android漏洞在https://code.google.com/p/android/issues/detail?id=218956上被打开,并提交了几个解决方案。以下是我在onCreate
内部使用的另一个解决方案(其中fab
是FloatingActionButton
),在释放触摸时取消按下状态:
fab.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(final View view, MotionEvent motionEvent) {
int action = motionEvent.getAction() & MotionEvent.ACTION_MASK;
if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
view.post(new Runnable() {
@Override
public void run() {
view.setPressed(false);
}
});
}
return false;
}
});
(在某些情况下,直接在处理程序中调用setPressed(false)
会导致click事件不触发)