2012-08-29 13 views
10

¿Es posible obtener una lista de todos Windows en mi aplicación Android?Obteniendo la lista de todos los Windows en Android

Si no es así, ¿es posible obtener notificaciones en la creación de un nuevo Ver o una ventana ?

Saludos :)

Por ejemplo: Me gustaría saber si hay una vista del teclado visible en la pantalla, o si hay un diálogo de alerta en la pantalla. ¿Es eso posible? ¿Puedo obtener la instancia de Vista o Ventana sosteniéndolo?

+1

puede explicar su pregunta un poco más – Sathish

+0

Supongo que está en el camino equivocado. –

+0

Se agregó un ejemplo de un caso de uso. Quiero acceder a la vista que sostiene el teclado. Más específicamente, quiero pintarlo en un lienzo también. – gilm

Respuesta

2

Sí, esto es posible de diferentes maneras. Todas las vistas que se muestran en la pantalla se agregan a un ViewGroup, que generalmente son diseños como R.layout.main, LinearLayout, RelativeLayout, etc.

Puede acceder a las vistas en tiempo de ejecución, una vez que se hayan construido los diseños. utilizando un controlador como onWindowFocusChanged:

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    int count = myLayout.getChildCount(); 
    for(int i = 0; i < count; i++) 
    { 
    View v = myLayout.getChildAt(i); 
    ... 
    } 
} 

puede simplemente configurar una rosca interior onWindowFocusChanged que notificaría si un teclado se crea comprobando constantemente el número de niños puntos de vista de la organización actual.

+0

, pero si no me equivoco, todas las vistas del teclado y los cuadros de diálogo y alertas son Vistas visualizadas en una Ventana diferente. ¿Puedo enumerar Windows? o Vistas en otras ventanas? – gilm

+0

Además, su código es para una actividad o una ventana. ¿Recuperar? De todos modos, ¿qué es myLayout? ¿Cómo lo asignas, a través de LayoutInflater? – gilm

1

Solo puede obtener vistas administradas por su aplicación.

Esto incluye todos los puntos de vista excepto las barras de estado y de navegación (por superiores a Honeycomb). Si elige tener su propio InputMethod, esa vista también puede ser suya, pero deberá registrar las vistas correctas del teclado. Consulte la pregunta this para obtener más información al respecto.

De lo contrario, si desea obtener todos los puntos de vista en la ventana:

ViewGroup decor = (ViewGroup)activity.getWindow().getDecorView(); 
int count = decor.getChildCount(); 
for(int i = 0; i < count; i++) { 
    View view = decor.getChildAt(i); //voila 
} 
1

bueno aprovechar de ese código que esto le ayudará a encontrar si se crea ningún diálogo en su actividad

class MyActivity extends Activity { 

@Override 
    public void onAttachedToWindow() { 

     super.onAttachedToWindow(); 

     Log.d("TAG", "New Window ATTACHED"); 
    } 

} 

onAttachedToWindow se llamará cada vez que el usuario cree un nuevo cuadro de diálogo o algo

+0

¿Puede obtener la Vista adjunta? – gilm

+0

para eso tienes que diseñar tu vista personalizada donde anularás esto en el método AttachedToWindow & y si onAttachedToWindow llama pase esa ID de vista u objeto lanza un mensaje al controlador y haz lo que quieras en ese controlador –

Cuestiones relacionadas