删除视图在线性布局中留下空白空间

问题描述:

我在我的活动中的某个操作中遇到问题。我创建了一个在线程上运行的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()?

你可能想:

LinearLayout.requestLayout()

公共无效requestLayout()

调用此当事情已经改变已经失效这一观点的布局。这将安排视图树的布局传递。当视图层次结构当前处于布局阶段时(isInLayout()),不应调用此视图层次结构(如果发生布局,则可以在当前布局阶段结束时(然后布局将再次运行)或当前帧结束后绘制并出现下一个布局。

其重写此方法应该调用父类的方法来正确处理可能的请求时,布局错误。

+0

我很欣赏你的时间的子类。我站起来去午餐锁定了我的手机,在我离开午餐之前解锁了它,并且发现它已更新了错误,所以我在离开前将我的发现发布在此处,再次致谢 – Mishtiff

+0

贾斯汀,我试图要求搁置我的TextViews的布局,它不会更新UI。锁定和解锁屏幕仍会更新。是否有可能是因为即时通讯在另一个线程中运行此调用,它没有运行? – Mishtiff

+0

我认为它应该在UI线程上运行,请参见[这里](http://stackoverflow.com/questions/24392835/calling-requestlayout-from-a-separate-thread) –