Java 删除视图会在linearlayout中留下空白
我在活动中的一个动作中遇到了问题。我已经创建了一个runnable,它在线程上运行。该线程检查textview是否已被刷过,并将textview移出屏幕。一旦文本视图脱离屏幕,它就会将其从线性布局中删除。布局不会更新其中的textview,并保留上一个textview所在的空间 现在怎么样:Java 删除视图会在linearlayout中留下空白,java,android,android-layout,android-studio,Java,Android,Android Layout,Android Studio,我在活动中的一个动作中遇到了问题。我已经创建了一个runnable,它在线程上运行。该线程检查textview是否已被刷过,并将textview移出屏幕。一旦文本视图脱离屏幕,它就会将其从线性布局中删除。布局不会更新其中的textview,并保留上一个textview所在的空间 现在怎么样: __________ __________ __________ |[item 1]| -----> |[item 1]| ----->
__________ __________ __________
|[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 | |
---------- ---------- ----------
我希望它如何运行:
__________ __________ __________
|[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 | |
---------- ---------- ----------
我希望这能解释发生了什么,我有什么。如果没有,我会再加上
编辑:如果我锁定和解锁屏幕,它会更新UI,并且视图是固定的。似乎我正在寻找刷新或可能使()无效?您可能需要:
公共无效请求布局()
当某些更改使此视图的布局无效时调用此函数。这将计划视图树的布局过程。当视图层次结构当前位于布局过程中时,不应调用此函数(.i)。如果正在进行布局,则可能会在当前布局过程结束时(然后布局将再次运行)或在绘制当前帧和进行下一个布局后执行请求
重写此方法的子类应调用超类方法,以正确处理布局错误期间可能出现的请求
谢谢你的时间。我站起来准备去吃午饭并锁定了我的手机。我在去吃午饭之前解锁了手机,注意到它更新了错误,所以我在离开之前在这里发布了我的发现。再次感谢!贾斯汀,我试着在我的文本视图的保留布局上请求布局,但它不会更新ui。锁定和解锁屏幕更新不正确。是否可能因为我在另一个线程中运行此调用,它没有运行?我认为它应该在UI线程上运行,看看我是否添加了此代码,它是否会重写活动之前运行的现有代码?我添加了此代码,活动将不再显示,并在5秒钟后崩溃我不确定影响在于您的代码。这可能是您实际上想要使
无效
,但因为您是从非UI线程调用的,所以您应该使用postInvalidate()
(请参阅)