2012-08-15 34 views
11

que tienen una altura establecida LinearLayout como match_parent de la siguiente manera:Como llegar altura de LinearLayout

<LinearLayout 
    android:id="@+id/list_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

Quiero conseguir la altura de este LinearLayout.
que utiliza el código de abajo:

LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout); 
int h = ll_list.getHeight(); 

Pero devuelto nulo.
¿Cómo puedo hacer?

+0

menos que usted va a tener una tarea en segundo plano la optimización de mapas de bits (o algo similar) antes de mostrarlos en la pantalla, realmente no puedo pensar en ningún momento que alguno necesite este valor. Si pudiera contarnos un poco más sobre su aplicación, podríamos indicarle una mejor alternativa de diseño. – Budius

+0

http://stackoverflow.com/a/41705445/5664529 mira esto, puede ayudarte. –

Respuesta

36

En primer lugar: el LinearLayout id es left_layout, no list_layout.

Además, ll_list.getHeight() devolverá 0 (así como ll_list.getWidth()) si aún no está dibujado.

solución sería la de obtener la altura después de que su punto de vista se layouted:

ll_list.post(new Runnable(){ 
    public void run(){ 
     int height = ll_list.getHeight(); 
    } 
}); 

Y asegúrese de que su ll_list es final.

+0

Cómo dejar que se dibuje. – brian

+0

@brian no es tu problema. Solo asegúrate de estar llamando 'getHeight()' después de dibujar la vista. –

+0

@brian He proporcionado un ejemplo –

1
LinearLayout ll_list = (LinearLayout)findViewById(R.id.list_layout); 
                 ^^^^^^^^^^ 
+2

puede estar tipeado incorrectamente en la pregunta. ni siquiera compilaría si ese fuera el caso –

+0

Error de error tipográfico. Pero aún no es nulo. – brian

+0

vea su nombre de archivo xml y también cambie la identificación y luego compruébelo –

-6

prueba este código:

public static int getViewDimensions(View v,String what){ 
    int result = 0; 
    if (what.equalsIgnoreCase("height")) { 
     result = v.getHeight(); 
    } else { 
     result = v.getWidth(); 
    } 
    return result; 

} 

continuación onBackPressed() que pueda obtener el Ancho y la altura de cualquier ViewLinear que necesita.

@Override 
public void onBackPressed() { 

    RelativeLayout banner = (RelativeLayout)findViewById(R.id.banner); 

    int h = getViewDimensions(banner, "height"); 
    int w = getViewDimensions(banner, "width"); 

    Log.v("Height*Widht", h +"*"+ w); 

} 
+1

¿Alguna razón por la que no sugirió simplemente llamar a banner.getHeight() o banner.getWidth()? – garlicman

+0

Porque quiero saber la altura y el ancho de muchas vistas, así que creé la función anterior. –

+0

y también quiero saber la mayor altura y ancho entre diferentes vistas según la dimensión de la vista. –

Cuestiones relacionadas