2012-08-09 16 views
5

actividad de mi aplicación para Android se ve así:WindowSoftInputMode y ScrollView

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/background" 
    android:orientation="vertical" > 

    <ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/ScrollView" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:fillViewport="true" 
     android:orientation="vertical" 
     android:paddingLeft="60dp" 
     android:paddingTop="53dp" > 

     <RelativeLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/RelativeLayout1" 
      android:layout_width="fill_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/billAmountText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/billAmount_string" 
       android:textAppearance="?android:attr/textAppearanceMedium" /> 

      <EditText 
       android:id="@+id/billAmount" 
       android:layout_width="173dp" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/billAmountText" 
       android:layout_marginTop="3dp" 
       android:inputType="numberDecimal" /> 
     </RelativeLayout> 
    </ScrollView> 

</RelativeLayout> 

Con el fin de asegurarse de que la imagen de fondo (que se define en el primer RelativeLayout) no se contraiga cuando aparezca el teclado, he puesto android:windowSoftInputMode="stateVisible|adjustPan en el archivo de manifiesto para mi actividad. Todo bien con el fondo y el diseño ahora, nada cambia de tamaño.

Pero el problema es que mi ScrollView no funciona ahora porque supongo que el sistema cree que la ventana no necesita redimensionar debido a mi modificación anterior al manifiesto, por lo que ScrollView no está activado. Lo contrario ocurre cuando saco android:windowSoftInputMode="stateVisible|adjustPan, el desplazamiento funciona, pero el fondo se comprime cuando se abre el teclado.

¿Hay alguna forma de codificarlo para que mi fondo no se contraiga, y mi ScrollView todavía funciona? ¡Gracias!

Respuesta

3

Trate de utilizar en su actividad de la propiedad windowSoftInputMode con los siguientes valores:

android:windowSoftInputMode="stateAlwaysHidden|adjustResize"

no sé si es necesario, pero se puede tratar de añadir a la etiqueta de su diseño ScrollView la fillViewPort a true . Por lo tanto, debe verse como algo que os muestro a continuación:

<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:fillViewport="true"> 

     <!-- Other Views --> 
</ScrollView> 

quisiera saber sobre su progreso.

+3

Gracias, pero no hubo suerte. Básicamente, quiero que AdjustResize se aplique a Scrollview, pero quiero que adjustPan se aplique a RelativeLayout, que aloja el fondo. – capcom

+0

Me encontré con este problema. Ojalá hubiesen encontrado una solución:/ – Rawr

+0

Estoy leyendo esto 4 años después y todavía no puedo encontrar la solución ... – vanomart

0

En la vista de desplazamiento, coloque una disposición relativa, el elemento secundario 0 es una vista de la imagen, y el elemento secundario 1 es su contenido. Use la vista de imagen para su imagen de fondo (src) en lugar del fondo de la vista de desplazamiento. La vista de la imagen respetará los tipos de escala, mientras que el fondo de un diseño no lo hará.

Cuestiones relacionadas