2011-02-25 8 views

Respuesta

4

mientras tanto encontré la solución. hay un nuevo evento OnLayoutChangeListener en honycomb que le permite esperar a que finalice el diseño y luego medir el tamaño de su diseño en lugar del tamaño de pantalla.

6

Por cierto ... para alguien más como yo que se encontró con esta pregunta buscando el número real, es de 48 píxeles (en el Motorola Xoom, al menos). Esto se basó en la salida de depuración de esta actividad de prueba (ciertamente cruda), combinada con un tema sin barra de título (p. Ej., @android: estilo/Theme.NoTitleBar) y una vista lineal única con altura y ancho configurados en " match_parent"(por ejemplo, el creado al crear una nueva aplicación de Android):

package com.sample.layouttest; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnLayoutChangeListener; 

public class Main extends Activity implements OnLayoutChangeListener { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     View newView = getLayoutInflater().inflate(R.layout.main, null); 
    newView.addOnLayoutChangeListener(this); 
    setContentView(newView); 
    } 

    @Override 
    public void onLayoutChange(View view, int left, int top, int right, 
      int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { 
     Log.d("LayoutTest","left="+left+", top="+top+", right="+right+", bottom="+bottom); 
    } 
} 

En un Motorola Xoom con Android 3.1 (así como un Galaxy 10.1v Samsung corriendo 3.0), la salida del método cuando onLayoutChange entrar en el modo de retrato es:

05-24 15:11:43.047: DEBUG/LayoutTest(8658): left=0, top=0, right=800, bottom=1232 

y al entrar paisaje:

05-24 15:13:18.837: DEBUG/LayoutTest(8658): left=0, top=0, right=1280, bottom=752 
Cuestiones relacionadas