2012-04-25 9 views
44

Quiero asignar pesos de diseño a varios elementos dentro de un LinearLayout dentro de un ScrollView. Sin embargo, el ScrollView ignora el LinearLayoutweightSum.Los pesos de diseño no funcionan dentro de un ScrollView

Mi objetivo es dividir el diseño con pesos de 2, 1, 1 (para una suma total de 4), pero esto no funciona correctamente dentro de un ScrollView.

¿Cómo puedo resolver este problema de diseño?

main.xml

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:weightSum="4"> 

     <LinearLayout android:id="@+id/logo" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:layout_weight="2" 
      android:background="#FFFFFF" /> 

     <LinearLayout android:id="@+id/logo1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:layout_weight="1" 
      android:background="#000000" /> 


     <LinearLayout android:id="@+id/logobutton" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" 
      android:layout_weight="1" 
      android:background="#4B4B4B" /> 

    </LinearLayout> 
</ScrollView> 
+0

si yo estoy quitando solamente ScrollView que es trabajo, pero mi pregunta es si el uso de la mañana ScrollView que no es trabajo –

+0

comprobar éste: [Android Disposición Peso] (http://stackoverflow.com/questions/4986861/ android-layout-weight) Creo que es el mismo problema. – user1264255

Respuesta

137

Me he enfrentado a este problema antes. Simplemente use android:fillViewport="true" en su ScrollView y llenará la pantalla.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scrollView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:fillViewport="true" > 
+1

@MIPTECH: prueba esta respuesta. Más información en Román Chico http://www.curious-creature.org/2010/08/15/scrollviews-handy-trick/ – Akhil

+2

+1 Trabajando como un encanto ... ¡Gracias! – Venky

+0

Gracias, realmente estaba buscando una solución y es exactamente lo que necesitaba. –

2

Esto no funcionará como lo ha hecho. La vista secundaria de ScrollView debe establecerse en wrap_content. Si lo configura en fill_parent, llenará el área del ScrollView y nunca se desplazará, porque no será mayor que el ScrollView.

La idea de layout_weight es llenar un área específica proporcionalmente.

Se debe ajustar todos los niños LinearLayoutslayout_height a cualquiera wrap_content o un tamaño específico (en dp) y el padre LinearLayoutlayout_height a wrap_content

Como se ha dicho que necesita para eliminar el adicional

xmlns : android = "http://schemas.android.com/apk/res/android"

si no es la raíz (fir st) elemento del diseño.

Cuestiones relacionadas