2015-11-13 121 views
0

我在我的活動中的某個操作中遇到問題。我創建了一個在線程上運行的runnable。該線程檢查是否已經刷新了文本視圖並將文本視圖移出屏幕。一旦該文本視圖脫離屏幕,它將從線性佈局中刪除它。該佈局不會更新其中的文字瀏覽並留下前一個文本視圖所在的空間。刪除視圖在線性佈局中留下空白空間

現在它是如何:

__________   __________   __________ 
|[item 1]| -----> |[item 1]| -----> |[item 1]| 
|[item 2]| User  |[swiped]| item 2 |  | 
|[item 3]| swipes |[item 3]| space |[item 3]| 
|[item 4]| item 2 |[item 4]| remains |[item 4]| 
|[item 5]|   |[item 5]|   |[item 5]| 
----------   ----------   ---------- 

我怎麼想它運行:

__________   __________   __________ 
|[item 1]| -----> |[item 1]| -----> |[item 1]| 
|[item 2]| user  |[swiped]| removed |[item 3]| 
|[item 3]| swiped |[item 3]| view & |[item 4]| 
|[item 4]|   |[item 4]| update |[item 5]| 
|[item 5]|   |[item 5]| space |  | 
----------   ----------   ---------- 

我希望這個解釋是怎麼回事,我有什麼。如果沒有生病添加更多。

編輯:如果我鎖定和解鎖我的屏幕,它會更新用戶界面,並修復視圖。看來我正在尋找一個刷新或可能invalidate()?

回答

2

你可能想:

LinearLayout.requestLayout()

公共無效requestLayout()

調用此當事情已經改變已經失效這一觀點的佈局。這將安排視圖樹的佈局傳遞。當視圖層次結構當前處於佈局階段時(isInLayout()),不應調用此視圖層次結構(如果發生佈局,則可以在當前佈局階段結束時(然後佈局將再次運行)或當前幀結束後繪製並出現下一個佈局。

其重寫此方法應該調用父類的方法來正確處理可能的請求時,佈局錯誤。

+0

我很欣賞你的時間的子類。我站起來去午餐鎖定了我的手機,在我離開午餐之前解鎖了它,並且發現它已更新了錯誤,所以我在離開前將我的發現發佈在此處,再次致謝 – Mishtiff

+0

賈斯汀,我試圖要求擱置我的TextViews的佈局,它不會更新UI。鎖定和解鎖屏幕仍會更新。是否有可能是因爲即時通訊在另一個線程中運行此調用,它沒有運行? – Mishtiff

+0

我認爲它應該在UI線程上運行,請參見[這裏](http://stackoverflow.com/questions/24392835/calling-requestlayout-from-a-separate-thread) –