2010-10-19 9 views
15

Estoy tratando de poner 2 listviews en mi diseño. El problema es que no sé el tamaño de cada lista de vista por adelantado. La primera vista de lista podría tener algunos elementos (0, 1, 2 hasta aproximadamente 10) y la segunda vista de lista podría tener muchos elementos (hasta 100).ANDROID: dividir la pantalla en 2 partes iguales con 2 listas de vista

Me trataron de establecer el peso de ambos listviews a 1, pero no funcionó:

=> Si la primera vista de lista tiene sólo 1 punto y el segundo 99, que no se ve en el primer elemento de listview # 1 => se encoge tanto (en relación con listview # 2) que no lo ves.

Así que estoy pensando ahora dividir la pantalla en 2 partes iguales (sin importar el tamaño de cada vista de lista, sin importar el tamaño) y poner las dos vistas de lista en cada parte. Por supuesto, debe funcionar en cualquier dispositivo ... entonces, ¿cómo puedo capturar el tamaño de la pantalla del dispositivo, dividirlo en dos y forzar que el tamaño de la vista de lista encaje en cada mitad de la pantalla?

¿Alguien ha hecho eso ya? ¿Hay otra opción para mostrar dos listas de diferentes tamaños en el mismo diseño (si utilizo una vista de desplazamiento de alguna manera? => Cuando el usuario está llegando al final de la primera lista, aparece la segunda lista => ¿es posible?)

Gracias por su ayuda y cualquier sugerencia ...

Hubert

+0

Lo que quiero decir con "dividir la pantalla en 2 partes iguales" es la mitad en la parte superior y la otra mitad en la parte inferior, no hacia la izquierda/derecha. (esta no es una opción válida para mí ya que los elementos que tengo que mostrar ya están definidos) – Hubert

+0

No sé cómo se logrará porque una vista de lista en actividad, debe tener un id android: id/list, ya que es un identificador, no puede haber dos similares en la misma actividad. Algunos más sabios que yo podrán lograr esto. – viv

+0

Lo tengo trabajando - 2 lisviews dentro de la misma actividad (no una actividad de lista sino una actividad "normal") => eche un vistazo a Dow Jones PRO => pantalla "Nuevo 52 semanas ALTO/BAJO" ... – Hubert

Respuesta

-4

intenta establecer tamaños en píxeles blandos (los independientes del dispositivo) - como "50sp" o "100SP" - soy seguro que encontrará el apropiado

+3

Esto la respuesta está tan lejos de la pista correcta ... ¿Cómo se usa la ayuda de sp con todos los tamaños de pantalla? De hecho, no hay manera de que puedas encontrar la unidad adecuada para dividir la pantalla por la mitad usando este ... –

20

Simplemente tuve que "encapsular" mis 2 listas de vistas en 2 linelayouts separados => estos 2 lineales de salida tener un peso de 1:

<LinearLayout android:layout_weight="1" 
        android:layout_height="fill_parent" 
        android:layout_width="fill_parent"> 

       <ListView android:id="@+id/ListView_NASDAQ100" 
          android:layout_height="fill_parent" 
          android:layout_width="fill_parent"> 

       </ListView> 
    </LinearLayout> 

<LinearLayout android:layout_weight="1" 
       android:layout_height="fill_parent" 
       android:layout_width="fill_parent"> 

      <ListView android:id="@+id/ListView_from_52w_HIGHLOW" 
         android:layout_height="fill_parent" 
         android:layout_width="fill_parent"> 

      </ListView> 
</LinearLayout> 
+0

si quieres ver esto en acción, la aplicación se llama DOW JONES para Android o NASDAQ 100 para Android. ¡selecciona el botón "52 semanas ALTO/BAJO" para ver esta pantalla dividida! cheers, H. – Hubert

+0

Para cualquier otra persona que se tropiece con esto, el complemento ADT para Eclipse (v15) no parece manejar esto correctamente, pero funciona cuando se ejecuta en un teléfono real (y, supongo, emuladores). –

3
<LinearLayout 
     android:id="@+id/ListView_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:weightSum="1" > 

     <RelativeLayout 
      android:id="@+id/rl_ListView1" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" > 

      <ListView 
       android:id="@+id/lv1" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 
       </ListView> 
     </RelativeLayout> 

     <RelativeLayout 
      android:id="@+id/rl_ListView2" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" > 

      <ListView 
       android:id="@+id/lv2" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 
      </ListView> 

     </RelativeLayout> 
    </LinearLayout> 

Crear una matriz de diseño lineal, definen un weightsum y dividir esto en dos disposiciones relativas diferentes cada uno de peso es igual a la mitad de weightsum total, porque en las cosas de disposición relativa son de fácil manejo y correctamente. Espero que esto funcione para usted

+0

pero quiero orientación vertical, ¿qué debo hacer? @Muhammad Zeshan – Banku

+1

lo que quiere decir con orientación vertical. ¿Puede explicar un poco más? –

+0

thnkx lo hice ... :) – Banku

Cuestiones relacionadas