API 7(2.1)
我正在为我的应用程序的drawable-hdpi文件夹实现高分辨率图像。
在屏幕的底部,我有一个带有fill_parent宽度的LinearLayout。在里面,我有3个LinearLayouts,权重为1.在这些内部,我有一个ImageView。实际上,我有3个相同大小的空间用于3张图像。
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image1"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:padding="0dip">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image2"
/>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image3"
/>
</LinearLayout>
</LinearLayout>
当手机处于横向模式时,一切都很好。
当手机处于纵向模式时,图像会缩小,因为它们的宽度对于屏幕上的1/3空间来说太宽。图像看起来还不错。
这是我的问题:
我的图像缩放得很好,但看起来包裹每个图像的LinearLayouts不会缩放它们的高度。
在横向模式下,包裹图像的LinearLayouts的顶部和底部共享边缘。意思是,ImageView的顶部与包裹它的LinearLayout的顶部对齐,ImageView的底部与包裹它的LinearLayout的底部对齐。换句话说,LinearLayout的高度== ImageView的高度。
在纵向模式下,包裹图像的LinearLayouts的顶部和底部在它们与图像的顶部和底部之间有一堆空间,几乎就像有填充一样。换句话说,LinearLayout的高度> ImageView的高度。这是不可取的。
有什么想法吗?
它几乎就像调整LinearLayout和ImageView一样,然后压缩ImageView以适应,然后不调整LinearLayout的大小......
答案 0 :(得分:4)
您可以尝试为两个方向设计单独的布局。在项目的res文件夹中创建一个名为layout-land
的子文件夹。复制或创建具有相同名称的新布局。通过这种方式,您可以完全控制任何方向的布局。
由于您使用的是android:layout_weight="1"
,因此不应该使用linearLayouts来分割空间,因此会出现额外的空间吗?
编辑: 当LinerLayout设置了权重时,似乎是ImageView扩展了它的高度。将此行添加到每个ImageView:
机器人:adjustViewBounds = “真”
答案 1 :(得分:0)
我知道这并没有回答你提出的问题,但是当设备方向改变时,通过将线性布局的方向更改为垂直来避免多个问题似乎更好。我相信你可以使用OrientationEventListener。
答案 2 :(得分:0)
我认为为肖像模式设计另一种布局会更好。 不要对纵向和横向模式使用相同的布局。最好为纵向和横向模式设置不同的布局,以便控制设计在我们手中。