2010-05-25 15 views
10

Tengo una ImageView en la parte superior de mi pantalla que se parece a lo siguiente:¿Cómo puedo especificar una altura dinámica para un ImageView?

╔══════════════════════════════════════════════╗ 
║ ImageView ╔══════════════╗    ║ 
║    ║    ║    ║ 
║    ║ Actual image ║    ║ 
║    ║    ║    ║ 
║    ║    ║    ║ 
║    ║    ║    ║ 
║    ╚══════════════╝    ║ 
╚══════════════════════════════════════════════╝ 

Por debajo de este, tengo una serie de botones y TextViews ..

me gustaría altura del ImageView a dinámicamente aumentar según la altura máxima de la pantalla. Estoy alineando el diseño que contiene los botones a lo largo de la parte inferior del borde de la pantalla, y me gustaría que el resto de la pantalla sea tomada por el ImageView anterior.

Además, dado que ImageView contiene una imagen centrada, también me gustaría establecer la altura mínima, y ​​una barra de desplazamiento si la pantalla es demasiado pequeña para mostrar la vista de la imagen y los botones a continuación.

Gracias!

¿Esto es posible?

+13

+1 para ascii visualización awesomeness. – womp

Respuesta

5

La primera parte debería ser bastante fácil si usa android:layout_width. Si configura el layout_width solo para ImageView (o su contenedor), se expandirá para ocupar la mayor cantidad posible del diseño principal. Por ejemplo, si desea un diseño donde un ImageView ocupaba todo el resto de la pantalla, que haría esto:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <ImageView android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:src="@drawable/icon" 
     android:scaleType="fitCenter" android:layout_weight="1" /> 
    <LinearLayout android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     <!-- Put whatever you want in here --> 
    </LinearLayout> 
</LinearLayout> 

En este ejemplo estoy estirando la imagen para ocupar toda la pantalla, pero también presenta el problema de "¿y si la imagen es demasiado grande para la pantalla y necesito desplazamiento?" En ese caso, todo lo que necesita hacer es agregar un ScrollView al diseño. Si la imagen es demasiado alta en vertical, la pantalla se desplazará automáticamente:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" 
    android:fillViewport="true"> 
    <LinearLayout android:orientation="vertical" 
     android:layout_width="fill_parent" android:layout_height="fill_parent"> 
     <ImageView android:layout_width="fill_parent" 
      android:layout_height="wrap_content" android:src="@drawable/huge" 
      android:scaleType="fitCenter" android:layout_weight="1" /> 
     <LinearLayout android:layout_width="wrap_content" 
      android:layout_height="wrap_content"> 
      <!-- Insert your content here --> 
     </LinearLayout> 
    </LinearLayout> 
</ScrollView> 

Una cosa importante Nota: Si usted no tiene android:fillViewport conjunto true en el ScrollView, ImageViews que son demasiado pequeños, no se llenará toda la pantalla

0

totalmente no es la respuesta que está buscando pero definitivamente es posible a través de una mezcla de scrollview relativo y codificación dinámica a través de su clase. no cerca de una computadora de programación en este momento, pero la respuesta vaga es "¿es posible? ¡Sí!" :)

Cuestiones relacionadas