使用ImageView旋转Android活动会将ImageView缩小到1px

时间:2012-10-15 17:03:12

标签: android layout rotation imageview

我有一项活动,用户可以通过意图选择照片。预期的行为如下:

  • 图像的大小可以填充父宽度(减去边距)。
  • 此尺寸不应该增加图像,只需在需要时缩小。
  • 宽高比应该始终准确。
  • 高度应与宽度完全一致,以保持正确的宽高比。
  • 在纵向模式下,滚动显示之前可以获得的最大高度很大(只需填满屏幕)。
  • 这意味着如果受到高度的限制,宽度可能无法完全拉伸到父宽度。
  • 在横向模式下,最大高度无关紧要,因为允许滚动,宽度应始终为父宽度。

这是我正在使用的纵向XML布局:

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"
                 android:orientation="vertical"
                 android:background="@drawable/gray_background"
                 android:weightSum="1" >

      <!-- Other controls here -->

      <ImageView android:id="@+id/imgView"
                 android:layout_gravity="center"
                 android:layout_margin="5dip"
                 android:layout_width="fill_parent"
                 android:layout_height="0dip"                
                 android:contentDescription="@string/ImageToSend"
                 android:adjustViewBounds="true"
                 android:layout_weight="1"
                 android:scaleType="fitCenter" />

      <!-- Other controls here -->
   </LinearLayout>

这是我正在使用的Landscape XML布局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:fillViewport="true">
   <!-- Other controls are here -->      
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:orientation="vertical"
                 android:background="@drawable/gray_background" >

       <ImageView android:id="@+id/imgView"
                  android:layout_gravity="center"
                  android:layout_margin="5dip"
                  android:layout_width="fill_parent"
                  android:layout_height="0dip"                
                  android:contentDescription="@string/ImageToSend"
                  android:adjustViewBounds="true"
                  android:layout_weight="1"
                  android:scaleType="fitCenter" />

   <!-- Other controls are here -->      
   </LinearLayout>
</ScrollView>

无论我在哪个视图中,这都完美无缺。我遇到的问题是当用户旋转设备时,ImageView不再具有正确的大小。如果我从横向模式中选择图像开始,旋转看起来很好。如果我从纵向模式中选择图像开始,然后切换到横向模式,图像现在显示为1像素1像素。

任何想法?

1 个答案:

答案 0 :(得分:1)

经过一段失败的expiraments后,我发现调用setContentView()并重做布局修复了问题。不确定这是否是我应该做的,但它已修复它。