在onCreate()之后更改View属性

时间:2010-08-04 07:17:01

标签: android layout dynamic oncreate absolutelayout

首次发布海报,Android新手,我似乎遇到了这个问题的障碍:

我正在创建一个动态布局,由几个相同的“复合”对象组成(这些对象基本上是“浮动”的LinearLayouts,每个都包含一个图标(ImageView)和一个标题(TextView))。每个LinearLayout的(x,y)坐标可能会根据用户操作发生变化,并且需要精确放置(即:不能使用RelativeLayout等),所以我将它们放在AbsoluteLayout中。

在onCreate()期间,我将这些对象中的每一个作为子视图添加到AbsoluteLayout对象中,然后手动设置(x,y)。到目前为止没有问题,效果很好,初始布局是完美的。

问题:

在初始onCreate()之后,我无法在屏幕上更改这些对象的(x,y)位置。我可以更新他们的layoutParams,但屏幕上的布局(在AbsoluteLayout内)永远不会刷新。我尝试过forceLayout(),invalidate(),requestLayout(),但都没有。

我的基本方法是否存在问题,或者我有什么遗漏?

我正在考虑改用SurfaceView并且只是以艰难的方式进行渲染,但是我的代码现在工作率很高99%,如果我不需要,我不想改变它。唯一的问题是布局管理器只是拒绝为我的子对象注册位置更改。

帮助,我做错了什么?

1 个答案:

答案 0 :(得分:0)

您是否尝试为UI创建处理程序,然后从中更新UI ..

UI无法从不同的线程更新。因此,为UI创建一个线程处理程序,并使用该处理程序更新UI。

-vinay