[英]MotionEvent.ACTION_UP and/or ACTION_MOVE not always firing
我有一個帶有一系列linearlayout文本視圖的ScrollView。 當用戶“觸摸”這些文本視圖之一時,我正在臨時更改背景顏色以“顯示”觸摸,以便他們可以直觀地確認觸摸的項目。 當他們松開手指時,我將背景顏色改回默認顏色。
我遇到的一個問題是,如果他們滾動用戶,則ACTION_UP似乎不會啟動,因此textview的背景永遠不會變回默認值。
我以為可以通過在我的TouchListener上添加一個ACTION_MOVE來解決此問題,這似乎可以更好地解決此問題,但並非總是如此。
我的代碼看起來像這樣...
mytextview.setOnTouchListener(mytouch);
隨着...
private View.OnTouchListener mytouch = new View.OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.setBackgroundColor(getResources().getColor(R.color.mytouchcolor));
}
if (event.getAction() == MotionEvent.ACTION_UP) {
v.setBackgroundColor(getResources().getColor(R.color.mydefaultcolor));
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
v.setBackgroundColor(getResources().getColor(R.color.mydefaultcolor));
}
return false;
}
}
如果我...
如果我觸摸並快速滾動(或輕拂),則ACTION_UP或ACTION_MOVE似乎從未觸發(根據某些LOG.I()
測試)。
我該如何解決這個問題,以便在觸摸解除后滾動或不滾動,背景顏色總是恢復為默認值?
有一個簡單的方法:
在布局中:
<TextView
android:id="@+id/mytextview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/view_selector"
/>
view_selector:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@mipmap/view_press"/>
<item android:drawable="@mipmap/view_default"/>
</selector>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.