【发布时间】:2022-03-11 17:51:42
【问题描述】:
我正在尝试将元素的高度设置为在 18:9 屏幕上更长,并且它的工作方式很有趣。这行代码
includeExteriorFrame.setLayoutParams(new ConstraintLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, getResources().getDimensionPixelSize(R.dimen._420sdp)));
给我带来了一些麻烦。我会逐点解压:
1 - 函数 setLayoutParams 一开始抛出异常,因为我使用的是 FrameLayout.LayoutParams 而不是 ConstraintLayout.LayoutParams。我之所以这么说是因为在声明 includeExteriorFrame 时我将其声明为 FrameLayout,但正如您所见,LayoutParams 被声明为 ConstraintLayout。为什么这行得通?是因为 FrameLayout 在 ConstraintLayout 里面吗?
2.- 当我调整元素的大小时,它们会粘在屏幕顶部。我想这与调整大小如何更新元素有关。之后我尝试设置元素约束,但无济于事,它们真的卡在了顶部。
我已经测试了这个问题的许多解决方案,比如使用纯 int 变量设置两个维度,设置其他组件以及我试图调整大小的组件,我一直在寻找一个更好的函数,它不会得到元素卡住了,但我找不到任何东西,所以我决定问这个。如果需要,可以提供更多信息。
非常感谢您的关注。
【问题讨论】:
-
对于
ConstraintLayout,您还需要设置Constraints。默认位置是左上角.. 见stackoverflow.com/questions/45263159/… -
解决了,非常感谢您指出:-)
标签: java android android-layout