3

我添加了一個使用setOnLongClickListener()的長按聆聽者。通常,按預期調用長按聽者。但是,有時候長時間點擊會中止(視圖突出顯示,但是即使仍然被按下,仍然不登場)。當更新其他視圖結構(進度條,計數器,動畫等)時,會出現這種情況。Android:setOnLongClickListener()不可靠

是否有任何特定的已知中斷或中止長點擊時間?

+0

我想你說過了,UI線程是一個單線程,並且一次只能做一件事,如果可以處理你的長時間點擊或處理更新其他視圖,不能同時做兩件事。 – LuckyMe

回答

0

這似乎已經由可變寬度TextViewandroid:layout_width="wrap_content")引起的。在用戶開始長時間點擊之後但在長時間點擊持續時間過去之前,顯示的文本偶爾會發生更改,從而阻止偵聽器被調用。標籤寬度的變化會觸發佈局過程,從而導致長按無效。

我們能夠通過確保視圖在文本更改中保持固定寬度來解決問題。

-1

您可以在一個新的可運行

最終可運行可運行=新的Runnable(){ 公共無效運行更新UI(){ updateYourUIHere(); } };

也是你onLongClickListener不會崩潰

+1

你不是隻能在UIThread中更新Android中的UI嗎?大多數情況下,我有另一種方式然後你的建議:我在另一個線程,並希望顯示一個吐司,然後我必須使用'runOnUIThread(新的Runnable(){@Override公共無效的運行(){ //顯示Toast或更新UI}});'因爲UIThread仍然是像@LuckyMe這樣的單線程,所以不可能同時處理LongClick並顯示/更新動畫。 –