簡體   English   中英

MotionEvent.ACTION_UP和/或ACTION_MOVE並非總是觸發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM