我有一个HorizontalScrollView,其中有一个ImageView和一个位于ImageView顶部的RelativeLayout。 RelativeLayout获取在运行时动态创建和分配的多个ImageButton。
<HorizontalScrollView
android:id="@+id/scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:fillViewport="true"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
>
<ImageView
android:id="@+id/scene"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:contentDescription="@string/indoor_tour_scene_view"
android:adjustViewBounds="true"
>
</ImageView>
<RelativeLayout
android:id="@+id/coordinate_container"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_alignTop="@id/scene"
>
<!-- Mapstops will be added programmatically -->
</RelativeLayout>
</RelativeLayout>
</LinearLayout>
</HorizontalScrollView>
在纵向模式下,ImageView在高度上填充视图端口和HorizontalScrollView,在宽度上重叠,因此您必须向左滚动以查看所有内容。
在横向模式下,高度仍为100%,但由于图像缩放,宽度将小于视口。所以我想在HorizontalScrollView内将视图居中。
我在RelativeLayout上使用layout_gravity="center"
时遇到了一些偏移问题。我发现此博客条目https://content.pivotal.io/blog/centering-a-view-within-a-scrollview说它是一个Android错误,并且按照此处所述添加了解决方法。它根据偏移量起作用,但是现在我的RelativeLayout @+id/coordinate_container
填充了整个帧。这太大了,实际上应该与ImageView的大小匹配,因为动态创建的ImageButton位置是相对于ImageView的。
如何使HorizontalScrollView的子项居中而没有偏移错误,又如何相对于ImageView的内容具有coordinate_container,因此它不能填满整个框架?