2014-01-21 126 views
0

我知道Google工程师正在对视图布局和重新绘制进行一些控制。但我不明白的方式更改视图可见性不会更新屏幕。我的代码和平是两岸前锋:屏幕未更新

if (editMode) 
    mView.setVisibility(View.VISIBLE); 
else 
    mView.setVisibility(View.INVISIBLE); 

的“MVIEW”是一个TableLayout视图,显示其细胞活动时处于编辑模式。当活动处于正常模式时隐藏它。我试图在“mView”实例和它的父级(这是一个FrameLayout)中调用“invalidate()”,没有任何工作。我怀疑这可能与绘图缓存有关,所以我在父视图(FrameLayout)和“mView”实例中禁用了它。我没有改变。为什么视图如此卡住?我可能做错了什么,屏幕没有更新?

+1

TableLayout是否为空?如果是,那么将其设置为隐形将不会执行任何操作 - 它仍然存在,仍然用于布局目的,只是看不见。你尝试过使用View.GONE吗? –

回答

3

如果按屏幕没有得到更新你的意思是有一个空的空间,视图曾经是因为你让它看不见,即我们看不到它,但它在那里。如果要删除该空间,请使用View.GONE

+0

嗨,康德瓦尔。感谢帮助。 我已经尝试过'View.GONE',它具有相同的效果。 TableLayout不在那里,因为我检查了'getVisibility()'方法。但屏幕没有更新,网格(插槽)仍然显示。 顺便说一下,我已经尝试在FrameLayout(TableLayout的父级)和适当的TableLayout中调用'requestLayout()'和'invalidate()'来确保。浪费时间。 – Alessandro

+0

由于您现在提到的问题可能与您提出的问题有所不同,因此我建议您使用布局和活动代码以及可能的快照提出一个新问题。这样你将得到最大的帮助,因为现在很少有人会给你一个答案。如果您接受我的建议,请从您的问题中删除更新并接受此答案。 –

+0

嗨,康德瓦尔。谢谢你的建议。我接受你的答案并删除更新。但我现在不会再提出另一个问题。这个问题已经超过一个星期没有解决方案,我的上司推迟了应用程序的发布。在不久的将来有一段时间,我会问新的问题,并听取您的建议。 再次感谢。 – Alessandro