安卓-如何根据父级调整ImageView的大小/重新定位

本文关键字:新定位 定位 何根 ImageView 调整 安卓 | 更新日期: 2023-09-27 17:58:32

根据其父项,建议采用什么方法来确保ImageView按钮的大小正确?

我的VideoView设置为"match_parent"(屏幕宽度),VideoView上的ImageView为60dp x 60dp,这在我测试的屏幕上很好。

问题是,如果我旋转手机,VideoView要小得多,ImageView就不再成比例,也不再处于正确的位置。同样的问题也适用于平板电脑等较大的屏幕尺寸。

我希望ImageView始终具有相同的比例大小,并且相对于VideoView(其父项)显示在相同的位置。

安卓-如何根据父级调整ImageView的大小/重新定位

您应该考虑在android:中使用layout_sum

由于我不知道你是如何编码的,所以我只能提供基于假设的代码。我假设您希望在父对象中按比例对齐VideoView和ImageView。(假设您需要ImageView占用30%的空间,VideoView占用其余70%的空间)。

您可以对XML文件进行如下编码:

<LinearLayout
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:weightSum="10"
   android:orientation="vertical"
   android:layout_gravity="center">
<VideoView
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:layout_weight="3"/>
<ImageView
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:layout_weight="7"/>
</LinearLayout>

这将把VideoView和ImageView嵌入到LinearLayout(父视图)中。

尽量使用RelativeLayout、wrapContent并避免使用硬编码大小。

或者更好地为横向视图和纵向视图定义一个单独的布局,这可能会解决您的问题。

即使你的问题没有得到解决,也可以尝试使用这个库,我经常在我的项目中使用它SDP

我最终使用ViewTreeObserver GlobalLayout监听器以编程方式完成了这项工作。它工作得很好,我只需要在屏幕上查看一次,所以没什么大不了的。即使在手机旋转的情况下,按钮也会显示在相对于其父大小的正确位置。

    var topPadding = Convert.ToInt32(_videoView.Height * .25);
    _buttonLayout.SetPadding(_buttonLayout.PaddingLeft, topPadding, _buttonLayout.PaddingRight, _buttonLayout.PaddingBottom);