动态创建的Imageview随机开始将width / height设置为0,不知道还有什么尝试[Kotlin]

问题描述 投票:0回答:1

提前感谢:)

Context

我有一个运行在约120 FPS的游戏,它动态创建了在屏幕上移动的多个图像视图。这些图像视图持续5秒钟,然后变为不可见,并且代码停止与这些对象进行交互。然后创建新的Imageview,以替换持续5秒钟的图像,依此类推。我总共每5秒制作4个对象,以创建一个imageView。

问题

在程序执行过程中完全随机的时间,动态图像视图的宽度和高度开始为0,因此我无法在屏幕上看到它们。我根本没有改变imageview对象的创建方式,并且我找不到与何时开始发生任何关联。有时需要2秒钟才能完成,有时需要2分钟。另外,不是动态创建的其他imageView也可以。所有imageViews都在相同的约束布局上。

我尝试过的事情

我确定图像视图的可见性是可见的,并且位于屏幕上的x和y位置。我还通过添加背景色来检查Alpha是否为1F,问题不是图像本身,并且我检查了它的imageView在所有其他视图的前面。我还尝试了两种方式清理项目。我也尝试过在imageviews上使用requestLayout()和invalidate()。一旦它消失/变成0,它也不允许我更改宽度和高度。例如,在下面的代码中,它显示0。

body.layoutParams.width = 20
body.layoutParams.height = 20
println(body.width)
//prints out 0

这是我最初动态设置imageView的方式。直到无效才有效

body.layoutParams = LinearLayout.LayoutParams(size, size)
body.setImageResource(R.drawable.enemy_two)
body.x = ran.nextInt(screenWidth).toFloat()
body.y = ran.nextInt(screenHeight).toFloat()

main.runOnUiThread {
            layout.addView(body)
            body.visibility = View.VISIBLE}

[如果您有任何想法,请告诉我,因为我什至不知道该怎么做。这是我的第一个应用程序,因此我可能会缺少一些愚蠢的东西。谢谢]]

预先感谢:)上下文我有一个运行在约120 FPS的游戏,它可以动态创建在屏幕上移动的多个图像视图。这些图像视图持续5秒钟,然后是...

android kotlin dynamic width layoutparams
1个回答
0
投票

修改LayoutParams的属性后,尝试再次将它们设置到目标视图上。在其他情况下,更改将不会应用。

© www.soinside.com 2019 - 2024. All rights reserved.