【发布时间】:2018-07-09 13:46:31
【问题描述】:
我目前正面临一个使用 ConstraintLayout 的奇怪错误(?)。 我正在尝试将作为 Constraintlayout 的子项的 FrameLayout 的宽度设置为 0px。
我通过以下代码 sn-p 设置宽度:
// set width
val newWidth = 0
val frameParams = frame.layoutParams as ConstraintLayout.LayoutParams
frameParams.width = newWidth
frame.layoutParams = frameParams
logE("newWidth: $newWidth, frame.measuredWidth: ${frame.measuredWidth}, frame.width: ${frame.width}")
奇怪的是,我的 FrameLayout 似乎从来没有达到 0px 的“真实”宽度,而是一些接近 0 的随机值。请参阅下面的日志选择:
E/Log: newWidth: 0, frame.measuredWidth: 6, frame.width: 6
E/Log: newWidth: 0, frame.measuredWidth: 10, frame.width: 10
E/Log: newWidth: 0, frame.measuredWidth: 1, frame.width: 1
如您所见,无论是 FrameLayouts 的宽度,还是它的测量宽度,都没有达到 0 的值。 这是一个已知的错误吗?如果是,有人知道解决方法吗?
如果您需要任何进一步的信息,请告诉我。提前致谢!
【问题讨论】:
-
0dp 是“匹配约束”,如果你不想显示它,那么让它成为 1px
-
@EpicPandaForce 这确实成功了,尤其是“1px”提示。您介意将其发布为答案,以便以后对其他人有所帮助吗?
-
通常使用 View.GONE 是首选方式,除非您尝试在 RecyclerView 中执行此操作。在那里,GONE 是不够的,所以使用 1px 是一种 hack,但它有效!
标签: android kotlin android-constraintlayout android-framelayout