安卓-如何根据父级调整ImageView的大小/重新定位
本文关键字:新定位 定位 何根 ImageView 调整 安卓 | 更新日期: 2023-09-27 17:58:32
根据其父项,建议采用什么方法来确保ImageView按钮的大小正确?
我的VideoView设置为"match_parent"(屏幕宽度),VideoView上的ImageView为60dp x 60dp,这在我测试的屏幕上很好。
问题是,如果我旋转手机,VideoView要小得多,ImageView就不再成比例,也不再处于正确的位置。同样的问题也适用于平板电脑等较大的屏幕尺寸。
我希望ImageView始终具有相同的比例大小,并且相对于VideoView(其父项)显示在相同的位置。
您应该考虑在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);