0

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

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

这是我正在使用的纵向 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 不再具有正确的大小。如果我首先在横向模式下选择图像,旋转看起来很好。如果我首先选择纵向模式的图像,然后切换到横向模式,则图像现在显示为 1px x 1px。

有什么想法吗?

4

1 回答 1

1

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

于 2012-10-15T19:06:42.690 回答