根据其父级确保ImageView按钮的大小正确的推荐方法是什么?
我有一个VideoView设置为“match_parent”(屏幕宽度)和VideoView上的ImageView,它是60dp x 60dp,这在我正在测试的屏幕上很好。
问题是,如果我旋转手机并且VideoView要小得多,则ImageView不再成比例且位于正确的位置。对于较大的屏幕尺寸(例如平板电脑)也是如此。
我希望ImageView始终具有相同的比例大小,并且相对于VideoView(其父级)显示在相同的位置。
答案 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);