Android - 如何根据家长调整/重新定位ImageView?

时间:2016-07-25 22:39:08

标签: java c# android

根据其父级确保ImageView按钮的大小正确的推荐方法是什么?

我有一个VideoView设置为“match_parent”(屏幕宽度)和VideoView上的ImageView,它是60dp x 60dp,这在我正在测试的屏幕上很好。

问题是,如果我旋转手机并且VideoView要小得多,则ImageView不再成比例且位于正确的位置。对于较大的屏幕尺寸(例如平板电脑)也是如此。

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

3 个答案:

答案 0 :(得分:0)

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

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

您可以按如下方式对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(父视图)中。

答案 1 :(得分:0)

尝试使用RelativeLayout,wrapContent并避免使用hardCoded大小。

或者更好地为横向和纵向视图定义单独的布局,以解决您的问题。

即使您的问题没有解决,请尝试使用此库我经常在我的项目中使用它 - SDP

答案 2 :(得分:0)

我最终使用ViewTreeObserver GlobalLayout侦听器以编程方式执行此操作。它工作得很好,我只需要它在屏幕上的一个视图,所以没什么大不了的。

即使手机旋转,按钮也会显示在相对于其父级尺寸的正确位置。

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